<template>
	<div class="home-wrapper">
		<div class="home-header">
			<div class="header-item">国家科技安全</div>
			<div class="header-item">></div>
			<div class="header-item back-item" @click="handleBackHome">中美博弈概览</div>
			<div class="header-item">></div>
			<div class="header-item">出口管制</div>
		</div>
		<div class="home-main">
			<div class="home-main-header">
				<div class="home-main-header-center">
					<!-- <el-input
						v-model="searchKey"
						style="width: 100%; height: 48px"
						size="large"
						placeholder="搜索出口管制调查"
						:suffix-icon="Search"
					/> -->
					<el-input v-model="searchKey" style="width: 800px; height: 100%" placeholder="搜索出口管制调查" />
					<div class="search">
						<div class="search-icon">
							<img src="@/assets/icons/search-icon.png" alt="" />
						</div>
						<div class="search-text">搜索</div>
					</div>
				</div>
				<!-- <div class="home-main-header-footer">
					<div class="home-main-header-footer-item">
						<div class="item-top">1096</div>
						<div class="item-footer">实体清单</div>
					</div>
					<div class="home-main-header-footer-item">
						<div class="item-top">2633</div>
						<div class="item-footer">商业管制清单</div>
					</div>
					<div class="home-main-header-footer-item">
						<div class="item-top">162</div>
						<div class="item-footer">关键和新型技术清单</div>
					</div>
				</div> -->
				<div class="home-main-header-btn-box">
					<div class="btn" @click="scrollToTop('position1')">
						<div class="btn-text">{{ "最新动态" }}</div>
						<div class="btn-icon">
							<img src="@/assets/icons/arrow-right-icon.png" alt="" />
						</div>
					</div>
					<div class="btn" @click="scrollToTop('position2')">
						<div class="btn-text">{{ "资讯要闻" }}</div>
						<div class="btn-icon">
							<img src="@/assets/icons/arrow-right-icon.png" alt="" />
						</div>
					</div>
					<div class="btn" @click="scrollToTop('position3')">
						<div class="btn-text">{{ "统计概览" }}</div>
						<div class="btn-icon">
							<img src="@/assets/icons/arrow-right-icon.png" alt="" />
						</div>
					</div>
					<div class="btn" @click="scrollToTop('position4')">
						<div class="btn-text">{{ "资源库" }}</div>
						<div class="btn-icon">
							<img src="@/assets/icons/arrow-right-icon.png" alt="" />
						</div>
					</div>
				</div>
				<div class="home-main-header-footer-info">
					<InfoCard
						v-for="(item, index) in infoList"
						:key="item.id"
						:title="item.nameZh"
						:subtitle="item.nameAbbr"
						:description="item.description"
						:quantity="item.postCount"
						unit="次"
						:color="infoListColor[index]"
					/>
				</div>
			</div>

			<el-row :gutter="20" style="width: 1600px; margin: 0 auto">
				<CustomTitle id="position1" title="最新动态" style="margin-top: 24px" />
				<el-col :span="16">
					<custom-container titleType="primary" title="最新出口管制政策" :titleIcon="houseIcon" height="450px">
						<template #header-right>
							<el-button type="primary" @click="handleToDetail" link>
								{{ "查看详情 >" }}
							</el-button>
						</template>

						<template #default>
							<div class="box1">
								<el-carousel ref="carouselRef" trigger="click" height="350px" :autoplay="true">
									<el-carousel-item v-for="(item, index) in entitiesDataInfoList" :key="item.id + index">
										<div>
											<div class="box1-top">
												<div class="box1-top-title">
													{{ item.postDate }}——BIS《实体清单增列与修订条目》
												</div>
												<div class="box1-top-content">
													<div class="box1-top-content-item">
														<span class="box1-top-content-item-title">· 发布机构：</span>
														<span class="box1-top-content-item-content">{{ item.postOrgName }}</span>
													</div>
													<div class="box1-top-content-item">
														<span class="box1-top-content-item-title">· 生效日期：</span>
														<span class="box1-top-content-item-content">{{ item.postDate }}</span>
													</div>
													<div class="box1-top-content-item">
														<span class="box1-top-content-item-title">· 涉及领域：</span>
														<div
															class="box1-top-content-item-tags"
															v-for="domainItem in item.domains"
															:key="domainItem"
														>
															<el-tag
																:type="
																	domainItem === '航空航天'
																		? 'primary'
																		: item === '人工智能'
																		? 'danger'
																		: 'info'
																"
																>{{ domainItem }}</el-tag
															>
														</div>
													</div>
												</div>
											</div>
											<div class="box1-bottom">
												<div class="box1-bottom-title">· 涉及主要实体：</div>
												<div class="box1-bottom-content">
													<div
														class="box1-bottom-content-item"
														v-for="(ett, index) in item.sanEntities"
														:key="index"
														@click="handleEntityClick(ett)"
													>
														<el-image
															v-if="ett.img"
															class="box1-bottom-content-item-img"
															:src="ett.img"
															alt=""
														></el-image>
														<div v-else class="box1-bottom-content-item-imgUndefined">
															{{
																(ett.entityNameZh || ett.enName)?.match(
																	/[\u4e00-\u9fa5a-zA-Z0-9]/
																)?.[0]
															}}
														</div>
														<div class="box1-bottom-content-item-txt">
															{{ ett.name || ett.entityNameZh }}
														</div>
													</div>
												</div>
											</div>
											<div class="box1-absolute">
												<div class="box1-absolute-des">
													<el-icon><Warning color="rgba(206, 79, 81, 1)" /></el-icon>
													<span>新增中国实体</span>
												</div>
												<div class="box1-absolute-num">{{ item.cnEntityCount }}家</div>
											</div>
										</div>
									</el-carousel-item>
								</el-carousel>
							</div>
						</template>
					</custom-container>
				</el-col>
				<el-col :span="8">
					<custom-container titleType="danger" title="风险信号" :headerNum="5" :titleIcon="dangerIcon" height="450px">
						<template #default>
							<div class="box2-main">
								<div
									class="box2-main-item"
									v-for="(item, index) in warningList"
									:key="index"
									@click="handleToDetail"
								>
									<div
										class="item-left"
										:class="{
											itemLeftStatus1: item.status === '一般风险',
											itemLeftStatus2: item.status === '重大风险'
										}"
									>
										{{ item.status }}
									</div>
									<div class="item-right">
										<div class="text">
											{{ item.title }}
										</div>
										<div class="time">{{ item.time }}</div>
									</div>
								</div>
								<div class="box2-footer" @click="handleToMoreRiskSignal">
									<div class="icon">
										<img src="./assets/images/box2-footer-icon.png" alt="" />
									</div>
									<div class="text">{{ "查看更多" }}</div>
								</div>
							</div>
						</template>
					</custom-container>
				</el-col>
			</el-row>

			<el-row :gutter="20" style="width: 1600px; margin: 0 auto">
				<CustomTitle id="position2" title="资讯要闻" style="margin-top: 64px" />
				<el-col :span="12">
					<custom-container title="新闻资讯" :titleIcon="newsIcon" height="450px">
						<template #header-right>
							<el-button type="primary" link @click="handleToMoreNews">
								{{ "更多 +" }}
							</el-button>
						</template>

						<template #default>
							<div class="news-list">
								<NewsList :list-data="newsList" @click="handleNewsInfoClick" />
							</div>
						</template>
					</custom-container>
				</el-col>
				<el-col :span="12">
					<custom-container title="社交媒体" :titleIcon="dialogIcon" height="450px">
						<template #default>
							<div class="dialog-list">
								<MessageBubble
									v-for="(item, index) in socialMediaList"
									@click="handlePerClick(item)"
									@info-click="handleMediaClick(item)"
									:key="index"
									:avatar="item.avatar"
									:name="item.name"
									:time="item.time"
									:source="item.source"
									:content="item.content"
								/>
								<!-- <MessageBubble
									:avatar="customMessage.avatar"
									:name="customMessage.name"
									:time="customMessage.time"
									:source="customMessage.source"
									:content="customMessage.content"
								/> -->
								<!-- <MessageBubble
									@click="handlePerClick(item)"
									:avatar="trumpAvatar"
									name="唐纳德·特朗普"
									time="16:02"
									source="发布于真实社交"
									content="埃隆·马斯克在强力支持我竞选总统之前，早就知道我强烈反对‘电动汽车强制令’。这太荒谬了，这一直是我竞选活动的主要部分。电动汽车没问题，但不应该强迫每个人都拥有一辆。埃隆获得的补贴可能远远超过历史上任何一个人。如果没有补贴，埃隆可能不得不关门大吉，回到南非老家。"
								/>

								<MessageBubble
									:avatar="elongAvatar"
									name="埃隆·马斯克"
									time="16:02"
									source="发布于真实社交"
									content="如果这个疯狂的支出法案获得通过，‘美国党’将在第二天成立。"
								/>

								<MessageBubble
									:avatar="elongAvatar"
									name="埃隆·马斯克"
									time="16:02"
									source="发布于真实社交"
									content="提出特朗普政府的AI政策强调技术开放与快速应用，但可能以牺牲安全防范为代价，开启了“潘多拉魔盒”。"
								/> -->
							</div>
						</template>
					</custom-container>
				</el-col>
			</el-row>

			<el-row :gutter="20" style="width: 1600px; margin: 0 auto">
				<CustomTitle id="position3" title="数据总览" style="margin-top: 64px" />
				<el-col :span="24">
					<custom-container title="发布频度" :titleIcon="box3Icon" height="450px">
						<template #default>
							<div class="box3">
								<div class="box3-content">
									<div class="box3-content-title">实体清单发布频度</div>
									<el-table :data="tableData1" stripe style="width: 100%">
										<el-table-column prop="year" label="年份" width="150" />
										<el-table-column label="发布次数" width="200">
											<template #default="scope">
												<div style="display: flex; align-items: center">
													<span style="margin-right: 10px; width: 40px">{{ scope.row.num }}次</span>
													<el-progress
														:percentage="scope.row.percent * 100"
														:show-text="false"
														:status="getStatus(scope.row.percent)"
													/>
												</div>
											</template>
										</el-table-column>
										<el-table-column label="重点领域" width="280" align="center">
											<template #default="scope">
												<div
													style="display: flex; justify-content: center; align-items: center; gap: 5px"
												>
													<el-tag
														v-for="tag in scope.row.tags"
														:key="tag"
														:type="
															tag === '通信网络'
																? 'primary'
																: TAGTYPE[Math.floor(Math.random() * 5)]
														"
														>{{ tag }}</el-tag
													>
												</div>
											</template>
										</el-table-column>
									</el-table>
								</div>
								<div class="box3-content">
									<div class="box3-content-title">商业管制清单(CCL)更新频度</div>
									<el-table :data="tableData1" stripe style="width: 100%">
										<el-table-column prop="year" label="年份" width="150" />
										<el-table-column label="发布次数" width="200">
											<template #default="scope">
												<div style="display: flex; align-items: center">
													<span style="margin-right: 10px; width: 40px">{{ scope.row.num }}次</span>
													<el-progress
														:percentage="scope.row.percent * 100"
														:show-text="false"
														:status="getStatus(scope.row.percent)"
													/>
												</div>
											</template>
										</el-table-column>
										<el-table-column label="重点领域" width="280" align="center">
											<template #default="scope">
												<div
													style="display: flex; justify-content: center; align-items: center; gap: 5px"
												>
													<el-tag
														v-for="tag in scope.row.tags"
														:key="tag"
														:type="
															tag === '通信网络'
																? 'primary'
																: TAGTYPE[Math.floor(Math.random() * 5)]
														"
														>{{ tag }}</el-tag
													>
												</div>
											</template>
										</el-table-column>
									</el-table>
								</div>
								<div class="box3-content" style="display: none">
									<div class="box3-content-title">关键与新兴技术清单(CETs)</div>
									<el-table :data="tableData1" stripe style="width: 100%">
										<el-table-column prop="year" label="年份" width="100" />
										<el-table-column label="发布次数" width="180">
											<template #default="scope">
												<div style="display: flex; align-items: center">
													<span style="margin-right: 10px; width: 40px">{{ scope.row.num }}次</span>
													<el-progress
														:percentage="scope.row.percent * 100"
														:show-text="false"
														:status="getStatus(scope.row.percent)"
													/>
												</div>
											</template>
										</el-table-column>
										<el-table-column label="重点领域" width="180">
											<template #default="scope">
												<div style="display: flex; align-items: center; gap: 5px">
													<el-tag
														v-for="tag in scope.row.tags"
														:key="tag"
														:type="
															tag === '通信网络'
																? 'primary'
																: TAGTYPE[Math.floor(Math.random() * 5)]
														"
														>{{ tag }}</el-tag
													>
												</div>
											</template>
										</el-table-column>
									</el-table>
								</div>
							</div>
						</template>
					</custom-container>
				</el-col>
			</el-row>

			<el-row :gutter="20" style="width: 1600px; margin: 0 auto">
				<el-col :span="8">
					<custom-container title="制裁领域分析" :titleIcon="radarIcon" height="480px">
						<template #header-right>
							<el-checkbox v-model="domainChecked" label="50%规则" size="large" />
						</template>
						<template #default>
							<EChart :option="radarOption" autoresize :style="{ height: '450px' }" />
						</template>
					</custom-container>
				</el-col>
				<el-col :span="16">
					<custom-container title="制裁清单数量增长趋势" :titleIcon="qushiIcon" height="480px">
						<template #header-right>
							<el-checkbox v-model="trendChecked" label="50%规则" size="large" />
						</template>
						<template #default>
							<EChart :option="trendOption" autoresize :style="{ height: '400px' }" />
						</template>
					</custom-container>
				</el-col>
			</el-row>

			<el-row :gutter="20" style="width: 1600px; margin: 0 auto">
				<CustomTitle id="position4" title="资源库" style="margin-top: 54px" />
				<el-col :span="8">
					<custom-container title="历次制裁过程" :titleIcon="listIcon" height="845px">
						<template #default>
							<div class="box4">
								<div style="height: 90%; overflow-y: auto; padding-top: 10px">
									<div class="box4-item" v-for="(item, idx) in sanctionProcessList" :key="item.title">
										<div class="box4-item-left">
											<el-image :src="dotIcon" alt="图片" class="box4-item-left-icon" />
											<div class="box4-item-left-line" v-if="idx + 1 != sanctionProcessList.length"></div>
										</div>
										<div class="box4-item-right">
											<div class="box4-item-right-header" @click="handleSanc(item)">
												<span class="box4-item-right-header-title"
													>{{ item.postDate }}—{{ item.title }}</span
												>
												<span class="box4-item-right-header-desc">{{ item.desc }}</span>
											</div>
											<div class="box4-item-right-content">
												{{ item.content }}
											</div>
										</div>
									</div>
								</div>
								<div class="box4-footer" :style="{ marginTop: sanctionProcessList.length > 0 ? '0px' : 'auto' }">
									<el-button type="primary" link :icon="DownRight" @click="handleGetMore"
										>查看更多
										<el-icon><DArrowRight /></el-icon>
									</el-button>
								</div>
							</div>
						</template>
					</custom-container>
				</el-col>
				<el-col :span="16">
					<custom-container title="制裁实体清单" :titleIcon="entityIcon" height="845px">
						<template #header-right>
							<div class="box5-header-right">共{{ total }}家实体</div>
						</template>
						<template #default>
							<div class="box5">
								<el-table
									:data="entitiesList"
									class="sanction-table"
									stripe
									empty-text="暂无数据"
									height="700px"
									header-row-class-name="table-header"
									row-class-name="table-row"
								>
									<!-- <el-table-column prop="index" label="序号" width="80" align="center">
										<template #default="scope">
											{{ scope.$index + 1 + (currentPage - 1) * pageSize }}
										</template>
									</el-table-column> -->

									<el-table-column prop="name" label="实体名称" min-width="200">
										<template #default="scope">
											<div class="tableName" @click="handleCompClick(scope.row)">
												<el-image
													v-if="scope.row.img"
													class="box1-bottom-content-item-img"
													:src="scope.row.img"
													alt=""
												></el-image>
												<div v-else class="box1-bottom-content-item-imgUndefined">
													{{
														(scope.row.name || scope.row.enName)?.match(
															/[\u4e00-\u9fa5a-zA-Z0-9]/
														)?.[0]
													}}
												</div>
												{{ scope.row.name }}
											</div>
										</template>
									</el-table-column>

									<el-table-column prop="domains" label="涉及领域" min-width="150">
										<template #default="scope">
											<div class="domain-tags">
												<el-tag
													v-for="tag in scope.row.domains"
													:key="tag"
													:type="
														tag === '通信网络' ? 'primary' : tagsType[Math.floor(Math.random() * 5)]
													"
													>{{ tag }}</el-tag
												>
											</div>
										</template>
									</el-table-column>

									<el-table-column prop="sanctionDate" label="制裁时间" width="120" align="center">
										<template #default="scope">
											{{ scope.row.sanctionDate }}
										</template>
									</el-table-column>

									<!-- <el-table-column prop="strength" label="制裁强度" width="120" align="center">
										<template #default="scope">
											<div class="sanction-strength">
												<div :class="['strength-bar', `strength-${scope.row.strength}`]"></div>
												<span>{{ strengthLabels[scope.row.strength] }}</span>
											</div>
										</template>
									</el-table-column> -->

									<!-- <el-table-column prop="revenue" label="营收（亿元）" width="140" align="right">
										<template #default="scope">
											<span
												:class="['revenue-cell', scope.row.revenue === '无营收数据' ? 'no-revenue' : '']"
											>
												{{ scope.row.revenue }}
											</span>
										</template>
									</el-table-column> -->

									<el-table-column prop="revenue" label="50%规则子企业" width="280" align="right">
										<template #default="scope">
											<div class="num-item" v-if="scope.row.ruleOrgCount > 0">
												<div
													class="name-item"
													:class="[
														'revenue-cell',
														scope.row.revenue === '无营收数据' ? 'no-revenue' : ''
													]"
												>
													{{ scope.row.ruleOrgList[0].orgName }}...等
												</div>
												<div
													style="width: 50px; color: #409eff; cursor: pointer"
													@click="handleOrgClick(scope.row)"
												>
													{{ scope.row.ruleOrgCount }}家>
												</div>
											</div>
										</template>
									</el-table-column>
								</el-table>

								<div class="table-footer">
									<!-- <div class="pagination-info">
                    第{{ currentPage }}页，共{{ totalPages }}页
                  </div> -->
									<el-pagination
										v-model:current-page="currentPage"
										:page-size="pageSize"
										:total="total"
										:pager-count="5"
										layout="prev, pager, next"
										background
										@current-change="handlePageChange"
									/>
								</div>
							</div>
						</template>
					</custom-container>
				</el-col>
			</el-row>
		</div>
		<el-dialog v-model="dialogVisible" width="800" :before-close="handleClose">
			<template #title>
				<div class="dialog-title">50%规则子企业</div>
			</template>
			<div class="dialog-ett-wrpper">
				<div
					class="box1-bottom-content-item"
					v-for="(ett, index) in currentOrgList"
					:key="index"
					@click="handleEntityClick(ett)"
				>
					<el-image v-if="ett.img" class="box1-bottom-content-item-img" :src="ett.img" alt=""></el-image>
					<div v-else class="box1-bottom-content-item-imgUndefined">
						{{ (ett.orgName || ett.enName)?.match(/[\u4e00-\u9fa5a-zA-Z0-9]/)?.[0] }}
					</div>
					<div class="box1-bottom-content-item-txt">
						{{ ett.orgName || ett.orgNameZh }}
					</div>
				</div>
			</div>
			<template #footer>
				<div class="dialog-footer">
					<el-button @click="dialogVisible = false">取消</el-button>
					<el-button type="primary" @click="dialogVisible = false"> 确定 </el-button>
				</div>
			</template>
		</el-dialog>
	</div>
	<el-dialog v-model="mediaVisible" title="社交媒体信息" width="500" :before-close="handleMediaClose">
		<div class="dialog-content">
			{{ currentMedia }}
		</div>
		<template #footer>
			<div class="dialog-footer">
				<!-- <el-button @click="mediaVisible = false">Cancel</el-button> -->
				<el-button type="primary" @click="mediaVisible = false"> 确定 </el-button>
			</div>
		</template>
	</el-dialog>
</template>

<script setup>
import { onMounted, ref, computed, reactive, shallowRef, watch } from "vue";
import scrollToTop from "@/utils/scrollToTop";
import * as echarts from "echarts";
import setChart from "@/utils/setChart";
import { ElMessage, ElMessageBox } from "element-plus";

import { DArrowRight, Warning, Search } from "@element-plus/icons-vue";
// import router from "@/router/index";
import EChart from "@/components/Chart/index.vue";
import { TAGTYPE } from "@/public/constant";

import { useRouter } from "vue-router";

const router = useRouter();

import CustomContainer from "@/components/Container/index.vue";
import ClickableCard from "./components/link.vue";
import InfoCard from "./components/info.vue";
import CustomTitle from "./components/title.vue";
import NewsList from "./components/news.vue";
import MessageBubble from "./components/dialog.vue";

import trumpAvatar from "@/assets/images/icon-trump.png";
import elongAvatar from "@/assets/images/icon-elong.png";
import newsIcon from "@/assets/images/icon-news.png";
import dialogIcon from "@/assets/images/icon-duihua.png";
import houseIcon from "@/assets/images/icon-house.png";
import dangerIcon from "./assets/images/box2-header-icon.png";
import box1Image from "./assets/images/box1-image.png";
import box3Icon from "./assets/images/box1-header-icon.png";
import radarIcon from "./assets/images/icon-radar.png";
import qushiIcon from "./assets/images/icon-qushi.png";
import listIcon from "./assets/images/icon-list.png";
import dotIcon from "./assets/images/info2-icon.png";
import entityIcon from "./assets/images/icon-entity.png";

import newsImg from "@/assets/images/news-img.png";
import newsImg1 from "@/assets/images/newsImg1.png";

import getMultiLineChart from "./utils/multiLineChart";

import bill1 from "./assets/images/bill1.png";
import bill2 from "./assets/images/bill2.png";
import bill3 from "./assets/images/bill3.png";
import bill4 from "./assets/images/bill4.png";
import bill5 from "./assets/images/bill5.png";
import bill6 from "./assets/images/bill6.png";
import bill7 from "./assets/images/bill7.png";
import bill8 from "./assets/images/bill8.png";
import bill9 from "./assets/images/bill9.png";
import bill10 from "./assets/images/bill10.png";
import bill11 from "./assets/images/bill11.png";
import bill12 from "./assets/images/bill12.png";

import {
	getEntitiesDataCount,
	getEntitiesDataInfo,
	getIndustryCountByYear,
	getCountDomainByYear,
	getSanctionsInfoCount,
	getEntitiesList,
	getSanctionProcess,
	getSanDomainCount,
	getRiskSignal,
	getSocialMediaInfo,
	getNewsInfo
} from "@/api/exportControl";
import { getMultipleBarChart_m } from "./utils/charts";
import { formatAnyDateToChinese } from "./utils";
import _ from "lodash";

const handleCompClick = item => {
	console.log("item", item);
	const route = router.resolve({
		path: "/companyPages",
		query: {
			id: item.id
		}
	});
	window.open(route.href, "_blank");
};

const tagsType = ["primary", "success", "info", "warning", "danger"];

//数据定义
const entitiesDataInfoList = shallowRef([]);
// 趋势图
const trendOption = ref({});
const trendChecked = ref(false);
// 发布频度
const tableData1 = ref([]);
// 历次制裁过程
const sanctionProcessList = ref([]);
const sanctionPage = ref(1);
// 制裁实体清单
const entitiesList = ref([]);
// 风险信号
const riskSignalList = ref([]);
// 社交媒体信息
const socialMediaList = ref([]);

// 新闻资讯
const newsList = ref([]);

onMounted(async () => {
	try {
		const [dataCount, entitiesDataInfo, industryCountByYear, countDomainByYear] = await Promise.all([
			getEntitiesDataCount(),
			getEntitiesDataInfo(),
			getIndustryCountByYear(1),
			getCountDomainByYear(trendChecked.value)
		]);
		// 交换第二个和第三个元素
		[dataCount[1], dataCount[2]] = [dataCount[2], dataCount[1]];
		infoList.value = dataCount;

		const entityList = _.map(entitiesDataInfo?.sanEntities ?? [], ({ entityNameZh, entityName }) => {
			return { name: entityNameZh, enName: entityName };
		});
		entitiesDataInfoList.value = entitiesDataInfo || [];
		const list = _.chain(industryCountByYear).filter("year").orderBy("year", "desc").value();
		const total = _.sumBy(list, "count");
		tableData1.value = _.map(list, item => {
			return {
				year: item.year,
				num: item.count,
				percent: item.count / total,
				tags: item.domain
			};
		}).slice(0, 5);
		console.log("countDomainByYear", countDomainByYear);
		// 整理柱状图数据并应用到趋势图
		if (countDomainByYear && countDomainByYear[0].yearDomainCount) {
			trendOption.value = processYearDomainCountData(countDomainByYear[0].yearDomainCount);
		}
		// trendOption.value = getMultipleBarChart_m(countDomainByYear);
		// sanctionProcessList.value = _.map(_.slice(sanctionsInfoCount, 0, 5), item => {
		// 	return {
		// 		title: item.tittle,
		// 		desc: `${item.entitiesChNum} 家中国实体`,
		// 		content:
		// 			item.sanReason ||
		// 			"2025年3月25日，美国商务部工业与安全局以从事有悖于美国国家安全和外交政策利益的活动为由，宣布将来自中国的54家实体新增至“实体清单”。"
		// 	};
		// });
		await fetchRiskSignals("0103");
		// 获取社交媒体信息
		await fetchSocialMediaInfo();
		// 获取新闻资讯
		await fetchNewsInfo();
		await fetchEntitiesList(currentPage.value, pageSize.value);
		await fetchSanctionProcess(sanctionPage.value, 10);
		// 获取雷达图数据
		await fetchRadarData(domainChecked.value);
		// console.log("entitiesList entitiesList", entityBody);
		// entitiesList.value = _.map(entityBody.content, item => {
		// 	return {
		// 		...item,
		// 		name: item.entityNameZh,
		// 		enName: item.entityName,
		// 		domains: item.techDomains,
		// 		sanctionDate: item.startTime
		// 	};
		// });
		// console.log("entitiesList entitiesList 1", entitiesList.value);
	} catch (err) {
		console.log(err);
	}
});

// 新增函数：处理 yearDomainCount 数据并使用 getMultipleBarChart_m 方法生成图表配置
const processYearDomainCountData = yearDomainCountData => {
	// 提取所有年份并排序
	const years = [...new Set(yearDomainCountData.map(item => item.year))].sort();

	// 提取所有领域名称
	const allDomains = [...new Set(yearDomainCountData.flatMap(item => item.domainCountInfo.map(domain => domain.name)))];

	// 构造 getMultipleBarChart_m 所需的数据结构
	const chartData = {
		domains: allDomains,
		data: years.map(year => {
			const yearData = yearDomainCountData.find(item => item.year === year);
			const domainCounts = {};

			// 初始化所有领域的计数为0
			allDomains.forEach(domain => {
				domainCounts[domain] = 0;
			});

			// 填充实际数据
			if (yearData && yearData.domainCountInfo) {
				yearData.domainCountInfo.forEach(domain => {
					domainCounts[domain.name] = domain.count;
				});
			}

			return {
				year: year,
				domainNum: domainCounts
			};
		})
	};

	// 使用 getMultipleBarChart_m 生成图表配置
	return getMultipleBarChart_m(chartData);
};

watch(
	() => trendChecked.value,
	async checked => {
		const res = await getCountDomainByYear(checked);
		// if (res && Array.isArray(res) && res.length > 0) {
		// 	trendOption.value = getMultipleBarChart_m(res);
		// }
		// 整理数据并更新趋势图
		if (res && res[0].yearDomainCount) {
			trendOption.value = processYearDomainCountData(res[0].yearDomainCount);
		}
	}
);

const handleEntityClick = item => {
	console.log("item", item);
	const route = router.resolve({
		path: "/companyPages",
		query: {
			startTime: item.startTime,
			id: item.id
		}
	});
	window.open(route.href, "_blank");
};

// 返回首页
const handleBackHome = () => {
	router.push({
		path: "/overview"
	});
};
const carouselRef = ref(null);
const handleToDetail = () => {
	let activeIndex = 0;
	if (carouselRef.value) {
		activeIndex = carouselRef.value.activeIndex;
	}

	console.log("当前 Carousel 激活索引:", activeIndex);

	// 使用当前激活项的数据
	const currentItem = entitiesDataInfoList.value[activeIndex];
	if (currentItem) {
		const route = router.resolve({
			path: "/exportControlAnalysis",
			query: {
				startTime: currentItem.postDate
			}
		});
		window.open(route.href, "_blank");
	}
};

const billList = ref([]);
const curBillListIndex = ref(0);

const searchKey = ref("");
const infoListColor = ref(["rgba(206, 79, 81, 1)", "rgba(132, 136, 142, 1)", "rgba(132, 136, 142, 1)", "rgba(132, 136, 142, 1)"]);
const infoList = ref([]);

const customNewsData = ref([
	{
		image: newsImg,
		title: "美国智库激辩人工智能监管路径",
		time: "11-4",
		source: "华盛顿邮报",
		description: "各方就AI监管模式展开讨论。有观点认为碎片化州级监管比全面联邦法规更灵活，也有分析..."
	},
	{
		image: newsImg,
		title: "布鲁金斯学会称美国低估中国在“印太”战略",
		time: "11-3",
		source: "纽约时报",
		description: "分析认为，当美国注意力被其他地区分散时，中国通过外交、发展和防务多管齐下，系统性......"
	},
	{
		image: newsImg1,
		title: "五角大楼指令引发智库与国防部“脱钩”震荡",
		time: "11-3",
		source: "洛杉矶时报",
		description: "美国国防部长下令全面暂停部内人员参与所有智库活动，标志着传统的“旋转门”关系发生......"
	},
	{
		image: newsImg,
		title: "CSIS建议美国建立跨机构AI基准测试体系",
		time: "11-3",
		source: "福克斯新闻网",
		description: "指出美国《人工智能行动计划》忽视了基准测试这一关键环节，建议由国家标准与技术研究........."
	},
	{
		image: newsImg1,
		title: "美国智库激辩人工智能监管路径",
		time: "11-4",
		source: "华盛顿邮报",
		description: "各方就AI监管模式展开讨论。有观点认为碎片化州级监管比全面联邦法规更灵活，也有分析..."
	}
]);

// 雷达图
const domainChecked = ref(false);
const radarOption = ref({
	title: {
		text: ""
	},
	legend: {
		top: "0%",
		icon: "circle",
		data: ["实体清单", "商业管制清单", "关键和新型技术清单"]
	},
	grid: {
		top: "15%",
		containLabel: true
	},
	radar: {
		// shape: 'circle',
		indicator: [
			{ name: "集成电路", max: 6500 },
			{ name: "生物科技", max: 16000 },
			{ name: "人工智能", max: 30000 },
			{ name: "通信网络", max: 38000 },
			{ name: "量子科技", max: 52000 },
			{ name: "能源领域", max: 25000 }
		],
		axisName: {
			formatter: "{value}",
			color: "rgba(59, 65, 75, 1)",
			fontSize: 16,
			fontWeight: 700
		}
	},
	series: [
		{
			name: "",
			type: "radar",
			data: [
				{
					value: [4200, 3000, 20000, 35000, 50000, 18000],
					name: "实体清单",
					areaStyle: {
						color: "rgba(10, 87, 166, 0.2)"
					}
				},
				{
					value: [5000, 14000, 28000, 26000, 42000, 21000],
					name: "商业管制清单",
					areaStyle: {
						color: "rgba(206, 79, 81, 0.2)"
					}
				},
				{
					value: [4000, 14000, 18000, 21000, 32000, 10000],
					name: "关键和新型技术清单",
					areaStyle: {
						color: "rgba(250, 140, 22, 0.2)"
					}
				}
			]
		}
	]
});

// 获取雷达图数据
const fetchRadarData = async checked => {
	try {
		const data = await getSanDomainCount(checked);
		if (data && Array.isArray(data) && data.length > 0) {
			// 收集所有可能的领域名称
			const allDomains = new Set();
			data.forEach(item => {
				if (item.domainCountInfo) {
					item.domainCountInfo.forEach(domain => {
						allDomains.add(domain.name);
					});
				}
			});

			const domainNames = Array.from(allDomains);

			// 为每个制裁类型准备数据
			const seriesData = data.map(sanItem => {
				// 创建一个映射，将领域名称映射到数量
				const domainMap = {};
				if (sanItem.domainCountInfo) {
					sanItem.domainCountInfo.forEach(domain => {
						domainMap[domain.name] = domain.count;
					});
				}

				// 按照统一的领域顺序创建值数组
				const values = domainNames.map(name => domainMap[name] || 0);

				// 确定颜色
				let color = "rgba(10, 87, 166, 0.2)"; // 默认实体清单颜色
				if (sanItem.sanTypeName === "商业管制清单") {
					color = "rgba(206, 79, 81, 0.2)";
				} else if (sanItem.sanTypeName === "关键和新型技术清单") {
					color = "rgba(250, 140, 22, 0.2)";
				}

				return {
					value: values,
					name: sanItem.sanTypeName,
					areaStyle: { color }
				};
			});

			// 更新雷达图指标
			const maxValue = Math.max(...seriesData.flatMap(item => item.value)) * 1.2;
			const indicators = domainNames.map(name => ({
				name: name,
				max: maxValue || 100 // 防止max为0的情况
			}));

			// 更新雷达图配置
			radarOption.value.radar.indicator = indicators;
			radarOption.value.series[0].data = seriesData;
			radarOption.value.legend.data = data.map(item => item.sanTypeName);
		}
	} catch (error) {
		console.error("获取雷达图数据失败:", error);
	}
};

watch(
	() => domainChecked.value,
	() => fetchRadarData(domainChecked.value)
);

// 进度条状态
const getStatus = _percent => {
	const percent = _percent * 100;
	if (percent >= 90) {
		return "exception";
	} else if (percent >= 50) {
		return "warning";
	} else {
		return "success";
	}
};
// 制裁实体
const currentPage = ref(1); // 默认显示第5页
const pageSize = ref(10);
const total = ref(0);

// 获取实体清单数据
const fetchEntitiesList = async (page = 1, size = 10) => {
	try {
		const res = await getEntitiesList("实体清单", page, size);
		if (res) {
			entitiesList.value = res.content.map(item => ({
				...item,
				name: item.entityNameZh,
				enName: item.entityName,
				domains: item.techDomains,
				sanctionDate: item.startTime
			}));
			total.value = res.totalElements;
			currentPage.value = res.number + 1; // API返回的页码从0开始，前端从1开始
		}
	} catch (err) {
		console.error(err);
	}
};

const handleGetMore = async () => {
	sanctionPage.value++;
	try {
		const res = await getSanctionProcess("实体清单", sanctionPage.value, 10);
		if (res && res.content) {
			// 将新数据合并到现有列表中
			const newData = res.content.map(item => ({
				...item,
				title: item.name,
				desc: `${item.cnEntityCount} 家中国实体`,
				content:
					item.summary ||
					"2025年3月25日，美国商务部工业与安全局以从事有悖于美国国家安全和外交政策利益的活动为由，宣布将来自中国的54家实体新增至“实体清单”。"
			}));

			// 合并新数据到现有列表
			sanctionProcessList.value = [...sanctionProcessList.value, ...newData];
		}
	} catch (err) {
		console.error(err);
		// 如果请求失败，回退页码
		sanctionPage.value--;
	}
};

// 获取历次制裁过程数据
const fetchSanctionProcess = async (page = 1, size = 10) => {
	try {
		const res = await getSanctionProcess("实体清单", page, size);
		if (res) {
			sanctionProcessList.value = res.content.map(item => ({
				...item,
				title: item.name,
				desc: `${item.cnEntityCount} 家中国实体`,
				content:
					item.summary ||
					"2025年3月25日，美国商务部工业与安全局以从事有悖于美国国家安全和外交政策利益的活动为由，宣布将来自中国的54家实体新增至“实体清单”。"
			}));
		}
	} catch (err) {
		console.error(err);
	}
};

// 分页改变时的处理函数
const handlePageChange = page => {
	currentPage.value = page;
	fetchEntitiesList(page, pageSize.value);
};

const searchKeyword = ref("");
const strengthLabels = {
	strong: "强",
	medium: "中",
	weak: "弱",
	none: "无"
};

// 获取风险信号数据
const fetchRiskSignals = async () => {
	try {
		const data = await getRiskSignal();
		if (data && Array.isArray(data)) {
			warningList.value = data.map(item => ({
				...item,
				title: item.signalTitle,
				time: item.signalTime,
				status: item.signalLevel,
				id: item.signalId
			}));
		}
	} catch (err) {
		console.error("获取风险信号数据失败:", err);
	}
};

// 添加获取社交媒体信息的方法
const fetchSocialMediaInfo = async () => {
	try {
		const data = await getSocialMediaInfo();
		if (data && Array.isArray(data)) {
			socialMediaList.value = data.map(item => ({
				avatar: item.personImage,
				name: item.personName,
				time: formatTime(item.time),
				source: item.orgName,
				content: item.remarks
			}));
		}
	} catch (err) {
		console.error("获取社交媒体信息失败:", err);
	}
};

// 添加获取新闻资讯的方法
const fetchNewsInfo = async () => {
	try {
		const data = await getNewsInfo();
		if (data && Array.isArray(data)) {
			newsList.value = data.map(item => ({
				avatar: item.newsImage,
				name: item.newsTitle,
				time: formatTime(item.newsDate),
				source: item.newsOrg,
				description: item.newsContent
			}));
		}
	} catch (err) {
		console.error("获取新闻资讯失败:", err);
	}
};

const handlePerClick = item => {
	console.log("点击了社交媒体消息:", item);
	const route = router.resolve({
		path: "/characterPage",
		query: {
			type: item.type || [1, 2, 3][Math.floor(Math.random() * 3)]
		}
	});
	window.open(route.href, "_blank");
};
// 处理点击社交媒体消息的方法
const handleInfoClick = item => {
	console.log("点击了社交媒体消息的更多信息:", item);
	// 这里可以添加打开详情页的逻辑
	ElMessageBox.alert(`${item.content}`, "信息详情", {
		confirmButtonText: "确定",
		callback: action => {
			ElMessage({
				type: "info",
				message: `action: ${action}`
			});
		}
	});
};

// 添加格式化时间的方法
const formatTime = dateString => {
	const date = new Date(dateString);
	const hours = date.getHours().toString().padStart(2, "0");
	const minutes = date.getMinutes().toString().padStart(2, "0");
	return `${hours}:${minutes}`;
};

const warningList = ref([
	{
		title: "关于对中华人民共和国合成阿片类药物供应链...",
		time: "一天前",
		status: "特别重大"
	},
	{
		title: "关于调整汽车及汽车零部件进口的公告",
		time: "一天前",
		status: "特别重大"
	},
	{
		title: "关于调整钢铁进口的公告",
		time: "一天前",
		status: "重大风险"
	},
	{
		title: "关于使用互惠关税规范进口以纠正导致大规模...",
		time: "一天前",
		status: "重大风险"
	},
	{
		title: "关于修订对中华人民共和国低价值进口商品适...",
		time: "一天前",
		status: "一般风险"
	}
]);

const curBillList = ref([
	{
		billName: "大而美法案",
		introductionDate: "2025年7月4日",
		img: bill1
	},
	{
		billName: "GENIUS稳定币法案",
		introductionDate: "2025年7月5日",
		img: bill2
	},
	{
		billName: "美越贸易协议",
		introductionDate: "2025年7月6日",
		img: bill3
	},
	{
		billName: "美越贸易协议",
		introductionDate: "2025年7月7日",
		img: bill4
	},
	{
		billName: "汽车零部件25%关税实施规则",
		introductionDate: "2025年7月10日",
		img: bill5
	},
	{
		billName: "汽车零部件25%关税实施规则",
		introductionDate: "2025年7月12日",
		img: bill6
	},
	{
		billName: "小额豁免包裹政策调整",
		introductionDate: "2025年7月14日",
		img: bill7
	},
	{
		billName: "NIH预算否决案",
		introductionDate: "2025年7月15日",
		img: bill8
	},
	{
		billName: "得州国会选区重划法案",
		introductionDate: "2025年7月17日",
		img: bill9
	},
	{
		billName: "美越贸易协议",
		introductionDate: "2025年7月24日",
		img: bill10
	},
	{
		billName: "美越贸易协议",
		introductionDate: "2025年8月4日",
		img: bill11
	},
	{
		billName: "美越贸易协议",
		introductionDate: "2025年8月8日",
		img: bill12
	}
]);

const releaseTime = ref("近一年发布");

const categoryList = ref([]);

const activeCate = ref("全部分类");
const activeHylyId = ref("");

// 获取领域分类
const handleGetHylyList = async () => {
	try {
		const res = await getHylyList();
		console.log("行业领域列表");

		categoryList.value = res.data;
		const obj = {
			id: 0,
			hylyid: "",
			hylymc: "全部分类"
		};
		categoryList.value = [obj, ...categoryList.value];
	} catch (error) {}
};

const chart1Data = ref({
	title: [
		"2024-09",
		"2024-10",
		"2024-11",
		"2024-12",
		"2025-01",
		"2025-02",
		"2025-03",
		"2025-04",
		"2025-05",
		"2025-06",
		"2025-07",
		"2025-08"
	],
	data: [
		{
			name: "提出法案",
			value: [145, 52, 84, 99, 71, 96, 128, 144, 140, 168, 188, 172]
		},
		{
			name: "通过法案",
			value: [6, 3, 4, 6, 11, 5, 2, 14, 16, 27, 28, 44]
		}
	]
});

const handleSanc = item => {
	console.log(item);
	const route = router.resolve({
		path: "/exportControlAnalysis",
		query: {
			startTime: item.postDate
		}
	});
	window.open(route.href, "_blank");
};

// 获取热门法案
const handleGetHotBills = async () => {
	try {
		const res = await getHotBills();
		console.log("热门法案", res);
		billList.value = res.data;
	} catch (error) {
		console.error(error);
	}
};

// 根据法案类型获取法案列表
const handleGetBillsByType = async () => {
	const params = {
		type: activeHylyId.value
	};
	try {
		const res = await getBillsByType(params);
		console.log("根据法案类型获取法案列表", res);
		curBillList.value = res.data.map(item => {
			return {
				billId: item.billId,
				billName: item.billName,
				introductionDate: item.introductionDate,
				img: bill1
			};
		});
	} catch (error) {}
};

// 查看更多风险信号
const handleToMoreRiskSignal = () => {
	const route = router.resolve("/riskSignal");
	window.open(route.href, "_blank");
};

// 查看更多新闻资讯
const handleToMoreNews = () => {
	const route = router.resolve("/newsBrief");
	window.open(route.href, "_blank");
};

const handleNewsInfoClick = item => {
	console.log("点击了社交媒体消息的更多信息:", item);

	const route = router.resolve({
		path: "/newsAnalysis",
		query: {
			newsId: item.id
		}
	});
	window.open(route.href, "_blank");
};

onMounted(async () => {
	handleGetHylyList();
	let chart1 = getMultiLineChart(chart1Data.value.title, chart1Data.value.data[0].value, chart1Data.value.data[1].value);
	setChart(chart1, "chart1");
});

const dialogVisible = ref(false);
const currentOrgList = ref([]);
const handleClose = () => {
	dialogVisible.value = false;
};
const handleOrgClick = item => {
	console.log(item, item.name);
	currentOrgList.value = item.ruleOrgList;
	dialogVisible.value = true;
};

const mediaVisible = ref(false);
const currentMedia = ref("");
const handleMediaClose = () => {
	mediaVisible.value = false;
};
const handleMediaClick = item => {
	console.log(item, item.name);
	currentMedia.value = item.content;
	mediaVisible.value = true;
};
</script>

<style lang="scss" scoped>
:deep(.el-input__wrapper) {
	box-shadow: none;
}

.home-header {
	height: 64px;
	color: #fff;
	font-family: Microsoft YaHei;
	font-size: 20px;
	font-weight: 700;
	line-height: 26px;
	line-height: 64px;
	background: url("@/assets/images/nav-bg.png");
	box-sizing: border-box;
	padding-left: 160px;
	display: flex;
	.header-item {
		margin: 0 3px;
	}
	.back-item {
		cursor: pointer;
		&:hover {
			color: #ccc;
		}
	}
}

.box1 {
	display: flex;
	flex-direction: column;
	gap: 20px;
	position: relative;
	.box1-absolute {
		position: absolute;
		width: 240px;
		height: 89px;
		top: 30px;
		right: -24px;
		display: flex;
		flex-direction: column;
		align-items: flex-end;
		justify-content: center;
		padding-right: 50px;
		box-sizing: border-box;
		background: linear-gradient(to right, rgba(206, 79, 81, 0), rgba(206, 79, 81, 0.3));
		&-des {
			display: flex;
			gap: 5px;
			align-items: center;
			font-size: 18px;
			font-weight: 700;
			color: rgba(206, 79, 81, 1);
		}
		&-num {
			font-size: 32px;
			font-weight: 700;
			color: rgba(206, 79, 81, 1);
		}
	}
	.box1-top {
		// display: flex;
		// flex-direction: column;
		// gap: 10px;
		padding-left: 30px;
		border-bottom: 1px solid rgba(234, 236, 238, 1);
		&-title {
			font-size: 20px;
			font-weight: 700;
			color: $base-color;
			margin-top: 10px;
			margin-bottom: 15px;
		}
		&-content {
			display: flex;
			flex-direction: column;
			gap: 10px;
			margin-bottom: 20px;
			&-item {
				display: flex;
				gap: 5px;
				&-title {
					font-size: 16px;
					font-weight: 700;
					color: rgba(59, 65, 75, 1);
				}
			}
		}
	}
	.box1-bottom {
		padding-left: 30px;

		&-title {
			font-size: 16px;
			font-weight: 700;
			color: rgba(59, 65, 75, 1);
			margin-bottom: 15px;
		}
		&-content {
			display: flex;
			gap: 15px;
			flex-wrap: wrap;
			justify-content: space-between;
			padding-left: 10px;
			height: 156px;
			overflow: auto;
			&-item {
				display: flex;
				align-items: center;
				justify-content: flex-start;
				width: 48%; /* 留出2%的间距 */
				// margin-bottom: 6px;
				box-sizing: border-box;
				gap: 10px;
				cursor: pointer;
				&-img {
					width: 24px;
					height: 24px;
					flex-shrink: 0;
				}
				&-imgUndefined {
					width: 24px;
					height: 24px;
					font-size: 14px;
					font-weight: 700;
					flex-shrink: 0;
					color: rgba(5, 95, 194, 1);
					background-color: rgb(236, 245, 255);
					line-height: 24px;
					text-align: center;
					border-radius: 12px;
				}
				&-txt {
					font-size: 16px;
					font-weight: 400;
					color: rgba(95, 101, 108, 1);
				}
			}
		}
	}
	.box1-right {
		display: flex;
		flex-direction: column;
		gap: 10px;
		.box1-right-title {
			font-size: 20px;
			font-weight: 700;
			color: $base-color;
		}
		.box1-right-tags {
			display: flex;
			gap: 10px;
		}
		.box1-right-content {
			color: rgba(59, 65, 75, 1);
			font-size: 16px;
			font-weight: 400;
			line-height: 28px;
		}
		.box1-right-footer {
			margin-top: auto;
			display: flex;
			justify-content: space-between;
			align-items: center;
			.box1-right-footer-time {
				color: rgba(95, 101, 108, 1);
				font-size: 14px;
				font-weight: 400;
			}
		}
	}
}

.box2-main {
	height: 320px;
	overflow-y: auto;
	.box2-main-item {
		display: flex;
		justify-content: space-between;
		align-items: center;
		gap: 8px;
		box-sizing: border-box;
		padding-right: 3px;
		cursor: pointer;
		&:hover {
			background: var(--color-bg-hover);
		}
		.itemLeftStatus1 {
			color: rgba(82, 196, 26, 1) !important;
			background: rgba(246, 255, 237, 1) !important;
		}
		.itemLeftStatus2 {
			color: rgba(250, 140, 22, 1) !important;
			background: rgba(255, 247, 230, 1) !important;
		}
		.item-left {
			display: flex;
			align-items: center;
			width: 40px;
			height: 40px;
			padding: 5px;
			border-radius: 100%;
			background: rgba(255, 241, 240);
			color: rgba(245, 34, 45, 1);
			font-family: Microsoft YaHei;
			font-size: 12px;
			font-weight: 400;
			line-height: 14px;
			box-sizing: border-box;
			text-align: center;
			flex-shrink: 0;
		}
		.item-right {
			margin-left: 13px;
			width: 100%;
			display: flex;
			justify-content: space-between;
			align-items: center;
			gap: 8px;
			height: 47px;
			border-bottom: 1px solid rgba(240, 242, 244, 1);
			.text {
				font-family: Microsoft YaHei;
				line-height: 47px;
				width: 260px;
				font-size: 16px;
				font-weight: 400;
				color: rgba(59, 65, 75, 1);
				overflow: hidden;
				white-space: nowrap;
				text-overflow: ellipsis;
			}
			.time {
				margin-left: 10px;
				line-height: 47px;
				color: rgba(132, 136, 142, 1);
				font-family: Microsoft YaHei;
				font-size: 14px;
				font-weight: 400;
			}
		}
	}
}
.box2-footer {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 20px;
	width: 461px;
	height: 42px;
	display: flex;
	flex-direction: row;
	justify-content: center;
	align-items: center;
	border-radius: 6px;
	background: var(--color-main-active);
	margin: 0 auto;
	cursor: pointer;
	.icon {
		width: 16px;
		height: 16px;
		img {
			width: 100%;
			height: 100%;
		}
	}
	.text {
		margin-left: 8px;
		color: rgba(255, 255, 255, 1);
		font-family: Microsoft YaHei;
		font-size: 16px;
		font-weight: 400;
		line-height: 22px;
	}
}

.box3 {
	display: flex;
	justify-content: center;
	// align-items: flex-start;
	gap: 100px;
	.box3-content-title {
		font-size: 18px;
		font-weight: 700;
		font-family: Microsoft YaHei;
		width: 640px;
		height: 36px;
		display: flex;
		align-items: center;
		justify-content: center;
		background-color: rgba(247, 248, 249, 1);
		color: $base-color;
		margin-bottom: 15px;
	}
	.box3-content {
		// flex: 1;
		.el-progress--line {
			width: 82px;
		}
	}
}

.box4 {
	height: 786px;
	overflow: auto;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	padding-top: 16px;
	// padding-bottom: 50px;
	position: relative;
	.box4-item {
		display: flex;
		gap: 10px;
		align-items: flex-start;
		padding-bottom: 35px;
		position: relative;
		.box4-item-left {
			display: flex;
			flex-direction: column;
			align-items: center;
			.box4-item-left-icon {
				width: 10px;
				height: 10px;
			}
			.box4-item-left-line {
				width: 1px;
				height: 100%;
				position: absolute;
				border-left: 1px solid rgba(10, 87, 166, 0.3);
			}
		}
		.box4-item-right {
			display: flex;
			flex-direction: column;
			.box4-item-right-header {
				display: flex;
				justify-content: space-between;
				align-items: center;
				border-bottom: 1px solid rgba(234, 236, 238, 1);
				position: relative;
				top: -7.5px;
				padding-bottom: 8px;
				cursor: pointer;
				&-title {
					font-size: 18px;
					color: $base-color;
					font-weight: 700;
				}
				&-desc {
					font-size: 16px;
					font-weight: 700;
					color: rgba(59, 65, 75, 1);
				}
			}
			.box4-item-right-content {
				font-size: 16px;
				font-weight: 400;
				color: rgba(95, 101, 108, 1);
				overflow: hidden;
				display: -webkit-box;
				-webkit-line-clamp: 3;
				-webkit-box-orient: vertical;
				text-overflow: ellipsis;
				line-height: 25px;
			}
		}
	}
	.box4-footer {
		position: absolute;
		// margin-top: auto;
		display: flex;
		justify-content: center;
		align-items: center;
		bottom: 30px;
		left: 50%;
		margin-left: -30px;
		// margin-bottom: 30px;
	}
}

.box5 {
	height: 115%;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	align-items: center;
}
:deep(.table-header) {
	font-size: 16px;
	font-weight: 700;

	color: rgba(59, 65, 75, 1);
}
:deep(.table-row) {
	height: 64px;
}
.domain-tags {
	display: flex;
	gap: 8px;
}

.box5-header-right {
	font-size: 16px;
	font-weight: 700;
	color: $base-color;
}

.table-footer {
	margin-top: 20px;
}

.home-wrapper {
	.home-main {
		// width: 1400px;
		padding: 0 5%;
		margin: 0 auto;
		background: url("./assets/images/background.png");
		background-size: 100% 100%;
		.home-main-header {
			margin-top: 43px;
			display: flex;
			flex-direction: column;
			align-items: center;
			margin-bottom: 20px;
			.home-main-header-top {
				height: 30px;
				color: rgba(95, 101, 108, 1);
				font-family: Microsoft YaHei;
				font-size: 16px;
				font-weight: 400;
				line-height: 30px;
				margin-top: 43px;
			}
			.home-main-header-center {
				margin-top: 20px;
				width: 800px;
				height: 48px;
				border-radius: 10px;
				box-shadow: 0px 0px 15px 0px rgba(22, 119, 255, 0.1);
				background: rgba(255, 255, 255, 1);
				box-sizing: border-box;
				padding: 1px;
				position: relative;
				border: 1px solid transparent;
				&:hover {
					border: 1px solid var(--color-main-active);
				}
				.search {
					position: absolute;
					right: -1px;
					top: 0px;
					width: 120px;
					height: 46px;
					border-radius: 10px;
					background: var(--color-main-active);
					display: flex;
					justify-content: center;
					align-items: center;
					cursor: pointer;
					.search-icon {
						width: 18px;
						height: 18px;
						img {
							width: 100%;
							height: 100%;
						}
					}
					.search-text {
						margin-left: 8px;
						height: 22px;
						color: #fff;
						font-family: Microsoft YaHei;
						font-size: 16px;
						font-weight: 400;
						line-height: 22px;
					}
				}
			}
			.home-main-header-footer {
				margin-top: 38px;
				width: 700px;
				height: 64px;
				box-sizing: border-box;
				padding: 0 108px;
				display: flex;
				justify-content: space-between;
				.home-main-header-footer-item {
					padding: 0 10px;
					text-align: center;
					.item-top {
						height: 22px;
						color: rgba(20, 89, 187, 1);
						font-family: Microsoft YaHei;
						font-size: 36px;
						font-weight: 700;
						line-height: 22px;
					}
					.item-footer {
						margin-top: 10px;
						height: 30px;
						color: rgba(95, 101, 108, 1);
						font-family: Microsoft YaHei;
						font-size: 16px;
						font-weight: 400;
						line-height: 30px;
					}
				}
			}
			.home-main-header-footer-link,
			.home-main-header-footer-info {
				width: 100%;
				display: flex;
				justify-content: center;
				gap: 16px;
				padding: 30px 0;
			}
			.home-main-header-btn-box {
				width: 688px;
				margin: 0 auto;
				margin-top: 39px;
				display: flex;
				justify-content: space-between;
				.btn {
					display: flex;
					align-items: center;
					gap: 9px;
					width: 160px;
					height: 48px;
					border: 1px solid #aed6ff;
					box-sizing: border-box;
					border-radius: 24px;
					background: #e7f3ff;
					cursor: pointer;
					position: relative;
					&:hover {
						background: #cae3fc;
					}
					.btn-text {
						width: 80px;
						color: var(--color-main-active);
						font-family: Microsoft YaHei;
						font-size: 20px;
						font-weight: 400;
						line-height: 48px;
						margin-left: 36px;
						text-align: center;
					}
					.btn-icon {
						position: absolute;
						top: 16px;
						right: 19px;
						width: 6px;
						height: 12px;
						img {
							width: 100%;
							height: 100%;
						}
					}
				}
			}
		}
		.home-main-center {
			margin-top: 34px;
			.center-top {
				height: 450px;
				display: flex;
				gap: 20px;
				.box1 {
					display: flex;

					gap: 10px;
					position: relative;
					// .box1-left {
					//   position: absolute;
					//   left: 0;
					//   top: 200px;
					//   width: 24px;
					//   height: 48px;
					//   background: #e7f1ff;
					//   display: flex;
					//   justify-content: center;
					//   align-items: center;
					//   cursor: pointer;
					//   .icon {
					//     width: 11px;
					//     height: 18px;
					//     img {
					//       width: 100%;
					//       height: 100%;
					//     }
					//   }
					// }
					.box1-right {
						display: flex;
						justify-content: center;
						flex-direction: column;
						align-items: center;
						cursor: pointer;
						.icon {
							width: 11px;
							height: 18px;
							img {
								width: 100%;
								height: 100%;
							}
						}
					}
					.box1-header {
						height: 53px;
						border-bottom: 1px solid rgba(240, 242, 244, 1);
						display: flex;
						justify-content: space-between;
						.box1-header-left {
							display: flex;
							.icon {
								width: 18px;
								height: 18px;
								margin-top: 19px;
								img {
									width: 100%;
									height: 100%;
								}
							}
							.title {
								height: 22px;
								margin-left: 18px;
								margin-top: 16px;
								color: rgba(20, 89, 187, 1);
								font-family: Microsoft YaHei;
								font-size: 16px;
								font-weight: 700;
								line-height: 22px;
							}
						}
						.box1-header-right {
							margin-top: 19px;
							height: 16px;
							color: rgba(20, 89, 187, 1);
							font-family: Microsoft YaHei;
							font-size: 16px;
							font-weight: 400;
							line-height: 16px;
							cursor: pointer;
						}
					}
					.box1-main {
						display: flex;
						height: 354px;
						margin-top: 22px;
						.box1-main-top {
							height: 68px;
							display: flex;
							justify-content: space-between;
							.box1-main-top-left {
								color: rgba(20, 89, 187, 1);
								font-family: Microsoft YaHei;
								font-size: 20px;
								font-weight: 700;
								line-height: 22px;
								letter-spacing: 0px;
								text-align: left;
							}
							.box1-main-top-right {
								margin-left: 20px;
								display: flex;
								.num {
									padding: 1px 8px;
									height: 24px;
									box-sizing: border-box;
									border: 1px solid rgba(145, 202, 255, 1);
									border-radius: 4px;
									background: rgba(230, 244, 255, 1);
								}
								.tag {
									box-sizing: border-box;
									border: 1px solid rgba(135, 232, 222, 1);
									border-radius: 4px;
									background: rgba(230, 255, 251, 1);
								}
							}
						}
					}
				}
				.box2 {
					flex: 1;
					padding-right: 20px;
					height: 450px;
					box-shadow: 0px 0px 15px 0px rgba(22, 119, 255, 0.1);
					background: rgba(255, 255, 255, 1);
					position: relative;
					.box2-header {
						height: 54px;
						display: flex;
						.icon {
							width: 24px;
							height: 22px;
							margin-left: 33px;
							margin-top: 18px;
							img {
								width: 100%;
								height: 100%;
							}
						}
						.text {
							margin-left: 22px;
							margin-top: 16px;
							height: 22px;
							color: rgba(20, 89, 187, 1);
							font-family: Microsoft YaHei;
							font-size: 16px;
							font-weight: 700;
							line-height: 22px;
						}
						.num {
							width: 24px;
							height: 16px;
							text-align: center;
							color: rgba(255, 255, 255, 1);
							font-family: Microsoft YaHei;
							font-size: 12px;
							margin-left: 6px;
							margin-top: 17px;
							border: 1px solid rgba(255, 255, 255, 1);
							border-radius: 100px;
							background: rgba(255, 77, 79, 1);
						}
						.more {
							margin-top: 19px;
							margin-left: 256px;
							color: rgba(20, 89, 187, 1);
							font-family: Microsoft YaHei;
							font-size: 16px;
							font-weight: 400;
							line-height: 16px;
						}
					}
					.box2-main {
						height: 282px;
						overflow-y: auto;
						.box2-main-item {
							margin-left: 23px;
							height: 47px;
							width: 464px;
							display: flex;
							.itemLeftStatus1 {
								color: rgba(82, 196, 26, 1) !important;
								background: rgba(246, 255, 237, 1) !important;
							}
							.itemLeftStatus2 {
								color: rgba(250, 140, 22, 1) !important;
								background: rgba(255, 247, 230, 1) !important;
							}
							.item-left {
								margin-top: 4px;
								margin-left: 2px;
								width: 40px;
								height: 40px;
								border-radius: 20px;
								background: rgba(255, 241, 240);
								color: rgba(245, 34, 45, 1);
								font-family: Microsoft YaHei;
								font-size: 12px;
								font-weight: 400;
								line-height: 14px;
								box-sizing: border-box;
								padding: 6px 4px;
								text-align: center;
							}
							.item-right {
								margin-left: 13px;
								width: 408px;
								height: 47px;
								border-top: 1px solid rgba(240, 242, 244, 1);
								border-bottom: 1px solid rgba(240, 242, 244, 1);
								display: flex;
								.text {
									width: 348px;
									color: rgba(59, 65, 75, 1);
									font-family: Microsoft YaHei;
									font-size: 16px;
									font-weight: 400;
									line-height: 47px;
								}
								.time {
									margin-left: 10px;
									line-height: 47px;
									color: rgba(132, 136, 142, 1);
									font-family: Microsoft YaHei;
									font-size: 14px;
									font-weight: 400;
								}
							}
						}
					}
					.box2-footer {
						position: absolute;
						left: 26px;
						bottom: 20px;
						width: 430px;
						height: 42px;
						display: flex;
						flex-direction: row;
						justify-content: center;
						align-items: center;
						border-radius: 6px;
						background: rgba(22, 119, 255, 1);
						cursor: pointer;
						.icon {
							width: 16px;
							height: 16px;
							img {
								width: 100%;
								height: 100%;
							}
						}
						.text {
							margin-left: 8px;
							color: rgba(255, 255, 255, 1);
							font-family: Microsoft YaHei;
							font-size: 14px;
							font-weight: 400;
							line-height: 22px;
						}
					}
				}
			}
			.center-footer {
				margin-top: 21px;
				height: 450px;
				display: flex;
				.box3 {
					width: 900px;
					height: 450px;
					box-shadow: 0px 0px 15px 0px rgba(22, 119, 255, 0.1);
					background: rgba(255, 255, 255, 1);
					.box3-header {
						height: 53px;
						border-bottom: 1px solid rgba(240, 242, 244, 1);
						margin: 0 auto;
						display: flex;
						justify-content: space-between;
						padding: 0 20px;
						.box3-header-left {
							display: flex;
							.box3-header-icon {
								margin-top: 15px;
								width: 13px;
								height: 13px;
								img {
									width: 100%;
									height: 100%;
								}
							}
							.box3-header-title {
								margin-top: 16px;
								margin-left: 22px;
								height: 22px;
								color: rgba(20, 89, 187, 1);
								font-family: Microsoft YaHei;
								font-size: 16px;
								font-weight: 700;
								line-height: 22px;
							}
						}
						.box3-header-right {
							display: flex;
							justify-content: flex-end;
							width: 178px;
							height: 22px;
							.right-box {
								display: flex;
								margin-top: 16px;
								width: 89px;
								height: 22px;
								justify-content: flex-end;
								.icon1 {
									margin-top: 5px;
									width: 12px;
									height: 12px;
									border-radius: 6px;
									background: rgba(20, 89, 187, 1);
								}
								.icon2 {
									margin-top: 5px;
									width: 12px;
									height: 12px;
									border-radius: 6px;
									background: rgba(250, 140, 22, 1);
								}
								.text {
									margin-left: 5px;
									color: rgba(95, 101, 108, 1);
									font-family: Microsoft YaHei;
									font-size: 14px;
									font-weight: 400;
									line-height: 22px;
								}
							}
						}
					}
					.box3-main {
						height: 397px;
					}
				}
				.box4 {
					margin-left: 20px;
					width: 521px;
					height: 450px;
					box-shadow: 0px 0px 15px 0px rgba(22, 119, 255, 0.1);
					background: rgba(255, 255, 255, 1);
					.box4-header {
						width: 452px;
						margin: 0 auto;
						height: 53px;
						border-bottom: 1px solid rgba(240, 242, 244, 1);
						display: flex;
						.header-icon {
							margin-top: 18px;
							width: 18px;
							height: 18px;
							img {
								width: 100%;
								height: 100%;
							}
						}
						.header-title {
							margin-top: 16px;
							margin-left: 26px;
							height: 22px;
							color: rgba(20, 89, 187, 1);
							font-family: Microsoft YaHei;
							font-size: 16px;
							font-weight: 700;
							line-height: 22px;
						}
					}
					.box4-main {
						width: 452px;
						margin: 0 auto;
						margin-top: 8px;
						height: 360px;
						overflow-y: auto;
						.box4-main-item {
							margin-top: 6px;
							height: 30px;
							display: flex;
							.leftStatus3 {
								color: rgba(255, 197, 61, 1) !important;
							}
							.leftStatus2 {
								color: rgba(255, 169, 64, 1) !important;
							}
							.left {
								width: 44px;
								text-align: left;
								font-family: Microsoft YaHei;
								font-size: 18px;
								font-weight: 700;
								line-height: 30px;
								color: rgba(206, 79, 81, 1);
							}
							.center {
								width: 300px;
								color: rgba(95, 101, 108, 1);
								font-family: Microsoft YaHei;
								font-size: 16px;
								font-weight: 400;
								line-height: 30px;
							}
							.right {
								width: 108px;
								color: rgba(132, 136, 142, 1);
								font-family: Microsoft YaHei;
								font-size: 14px;
								font-weight: 400;
								line-height: 30px;
								text-align: right;
							}
						}
					}
				}
			}
		}
		.home-main-footer {
			// width: 100%;
			height: 911px;
			background: rgba(248, 249, 250, 1);
			.home-main-footer-header {
				margin-top: 37px;
				margin-bottom: 36px;
				// width: 1600px;
				height: 42px;
				// background: orange;
				display: flex;
				justify-content: space-between;
				.btn-box {
					width: 1300px;
					display: flex;
					justify-content: space-between;
					.btn {
						color: rgba(95, 101, 108, 1);
						font-family: Microsoft YaHei;
						font-size: 16px;
						font-weight: 400;
						line-height: 42px;
						padding: 0 24px;
						border-radius: 21px;
						background: rgba(20, 89, 187, 0);
						cursor: pointer;
						&:hover {
							background: rgba(20, 89, 187, 0.1);
						}
					}
					.btnActive {
						padding: 0 24px;
						border-radius: 21px;
						background: rgba(20, 89, 187, 1);
						color: #fff;
						&:hover {
							color: #fff;
							background: rgba(20, 89, 187, 1);
						}
					}
				}
				.select-box {
					height: 42px;
					box-sizing: border-box;
					padding: 5px 0;
				}
			}
			.home-main-footer-main {
				width: 100%;
				// background: orange;
				display: flex;
				flex-wrap: wrap;
				// justify-content: space-between;
				// justify-content: center;
				.main-item {
					width: 240px;
					height: 320px;
					box-shadow: 0px 0px 15px 0px rgba(22, 119, 255, 0.1);
					background: #fff;
					margin-bottom: 24px;
					margin-right: 25px;
					.main-item-box1 {
						margin-top: 20px;
						margin-left: 45px;
						width: 150px;
						height: 200px;
						box-sizing: border-box;
						border: 1px solid rgba(240, 242, 244, 1);

						img {
							width: 100%;
							height: 100%;
						}
					}
					.main-item-box2 {
						margin-top: 26px;
						text-align: center;
						height: 30px;
						color: rgba(59, 65, 75, 1);
						font-family: Microsoft YaHei;
						font-size: 16px;
						font-weight: 700;
						line-height: 30px;
					}
					.main-item-box3 {
						text-align: center;
						height: 30px;
						color: rgba(132, 136, 142, 1);
						font-family: Microsoft YaHei;
						font-size: 16px;
						font-weight: 400;
						line-height: 30px;
					}
				}
			}
		}
	}
}
.tableName {
	color: rgba(59, 65, 75, 1);
	font-family: Microsoft YaHei;
	font-size: 16px;
	font-weight: 700;
	line-height: 30px;
	letter-spacing: 0px;
	text-align: justify;
	display: flex;
	align-items: center;
	gap: 10px;
	cursor: pointer;

	.box1-bottom-content-item-imgUndefined {
		width: 24px;
		height: 24px;
		font-size: 14px;
		font-weight: 700;
		flex-shrink: 0;
		color: rgb(5, 95, 194);
		background-color: rgb(236, 245, 255);
		line-height: 24px;
		text-align: center;
		border-radius: 12px;
	}
}

.num-item {
	width: 280px;
	display: flex;
	.name-item {
		width: 215px;
		overflow: hidden;
		text-overflow: ellipsis;
		white-space: nowrap;
	}
}
.dialog-title {
	text-align: center;
	font-size: 24px;
	font-weight: 700;
	font-family: $base-font-family;
	padding-bottom: 10px;
	border-bottom: 1px solid #eee;
}
.dialog-ett-wrpper {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	height: 500px;
	.box1-bottom-content {
		display: flex;
		gap: 15px;
		flex-wrap: wrap;
		justify-content: space-between;
		padding-left: 10px;
		height: 156px;
		overflow: auto;
		&-item {
			display: flex;
			// align-items: center;
			justify-content: flex-start;
			width: 48%; /* 留出2%的间距 */
			// margin-bottom: 6px;
			box-sizing: border-box;
			gap: 10px;
			cursor: pointer;
			&-img {
				width: 24px;
				height: 24px;
				flex-shrink: 0;
			}
			&-imgUndefined {
				width: 24px;
				height: 24px;
				font-size: 14px;
				font-weight: 700;
				flex-shrink: 0;
				color: rgba(5, 95, 194, 1);
				background-color: rgb(236, 245, 255);
				line-height: 24px;
				text-align: center;
				border-radius: 12px;
			}
			&-txt {
				font-size: 16px;
				font-weight: 400;
				color: rgba(95, 101, 108, 1);
			}
		}
	}
}

:deep(.el-input__wrapper) {
	box-shadow: none;
	border-radius: 10px;
}
:deep(.el-input__wrapper:hover) {
	box-shadow: none !important;
}

:deep(.el-input__wrapper.is-focus) {
	box-shadow: none !important;
}

:deep(.el-table thead) {
	color: rgba(59, 65, 75, 1);
	font-family: Microsoft YaHei;
	font-size: 16px;
	font-weight: 700;
	line-height: 22px;
	letter-spacing: 0px;
	text-align: left;
}
:deep(.el-table tr) {
	color: rgba(59, 65, 75, 1);
	font-family: Microsoft YaHei;
	font-size: 16px;
	font-weight: 400;
	line-height: 24px;
	letter-spacing: 0px;
	text-align: justify;
}
</style>
