Merge branch 'main' of http://172.16.20.1:3000/Yuleiqi/pre-warning-system
							
								
								
									
										96918
									
								
								escel/edge.csv
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								escel/锚点20.docx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								escel/锚点事件分析信息收集.xlsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										37
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						| 
						 | 
					@ -9,8 +9,8 @@
 | 
				
			||||||
      "version": "0.0.0",
 | 
					      "version": "0.0.0",
 | 
				
			||||||
      "dependencies": {
 | 
					      "dependencies": {
 | 
				
			||||||
        "@antv/g6": "^4.8.24",
 | 
					        "@antv/g6": "^4.8.24",
 | 
				
			||||||
 | 
					        "echarts": "^5.6.0",
 | 
				
			||||||
        "element-plus": "^2.10.1",
 | 
					        "element-plus": "^2.10.1",
 | 
				
			||||||
        "express": "^5.1.0",
 | 
					 | 
				
			||||||
        "tdesign-vue-next": "^1.13.2",
 | 
					        "tdesign-vue-next": "^1.13.2",
 | 
				
			||||||
        "vue": "^3.5.13",
 | 
					        "vue": "^3.5.13",
 | 
				
			||||||
        "vue-router": "^4.5.1"
 | 
					        "vue-router": "^4.5.1"
 | 
				
			||||||
| 
						 | 
					@ -1699,7 +1699,22 @@
 | 
				
			||||||
    "node_modules/ee-first": {
 | 
					    "node_modules/ee-first": {
 | 
				
			||||||
      "version": "1.1.1",
 | 
					      "version": "1.1.1",
 | 
				
			||||||
      "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz",
 | 
					      "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz",
 | 
				
			||||||
      "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
 | 
					      "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
 | 
				
			||||||
 | 
					    "node_modules/echarts": {
 | 
				
			||||||
 | 
					      "version": "5.6.0",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.6.0.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==",
 | 
				
			||||||
 | 
					      "license": "Apache-2.0",
 | 
				
			||||||
 | 
					      "dependencies": {
 | 
				
			||||||
 | 
					        "tslib": "2.3.0",
 | 
				
			||||||
 | 
					        "zrender": "5.6.1"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "node_modules/echarts/node_modules/tslib": {
 | 
				
			||||||
 | 
					      "version": "2.3.0",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==",
 | 
				
			||||||
 | 
					      "license": "0BSD"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/element-plus": {
 | 
					    "node_modules/element-plus": {
 | 
				
			||||||
      "version": "2.10.1",
 | 
					      "version": "2.10.1",
 | 
				
			||||||
| 
						 | 
					@ -3069,10 +3084,20 @@
 | 
				
			||||||
        "vue": "^3.2.0"
 | 
					        "vue": "^3.2.0"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/wrappy": {
 | 
					    "node_modules/zrender": {
 | 
				
			||||||
      "version": "1.0.2",
 | 
					      "version": "5.6.1",
 | 
				
			||||||
      "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.6.1.tgz",
 | 
				
			||||||
      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
 | 
					      "integrity": "sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==",
 | 
				
			||||||
 | 
					      "license": "BSD-3-Clause",
 | 
				
			||||||
 | 
					      "dependencies": {
 | 
				
			||||||
 | 
					        "tslib": "2.3.0"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "node_modules/zrender/node_modules/tslib": {
 | 
				
			||||||
 | 
					      "version": "2.3.0",
 | 
				
			||||||
 | 
					      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
 | 
				
			||||||
 | 
					      "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==",
 | 
				
			||||||
 | 
					      "license": "0BSD"
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,6 +13,7 @@
 | 
				
			||||||
  "dependencies": {
 | 
					  "dependencies": {
 | 
				
			||||||
    "@antv/g6": "^4.8.24",
 | 
					    "@antv/g6": "^4.8.24",
 | 
				
			||||||
    "axios": "^1.10.0",
 | 
					    "axios": "^1.10.0",
 | 
				
			||||||
 | 
					    "echarts": "^5.6.0",
 | 
				
			||||||
    "element-plus": "^2.10.1",
 | 
					    "element-plus": "^2.10.1",
 | 
				
			||||||
    "tdesign-vue-next": "^1.13.2",
 | 
					    "tdesign-vue-next": "^1.13.2",
 | 
				
			||||||
    "vue": "^3.5.13",
 | 
					    "vue": "^3.5.13",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
		 Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 1.2 KiB  | 
| 
		 Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB  | 
| 
		 Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.2 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/images/main-6/highrisk.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 14 KiB  | 
| 
		 Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 14 KiB  | 
| 
		 Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 15 KiB  | 
| 
		 Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 15 KiB  | 
| 
						 | 
					@ -2,10 +2,9 @@
 | 
				
			||||||
  <div :class="containerClass" ref="scrollContainer">
 | 
					  <div :class="containerClass" ref="scrollContainer">
 | 
				
			||||||
    <div v-for="(item, index) in displayData" :key="index" class="containner4-data" 
 | 
					    <div v-for="(item, index) in displayData" :key="index" class="containner4-data" 
 | 
				
			||||||
      :class="{ 'temporary-style': item.showTemporaryStyle }">
 | 
					      :class="{ 'temporary-style': item.showTemporaryStyle }">
 | 
				
			||||||
      <img :src="item.avatar" alt="人物头像" />
 | 
					      <img :src="item.avatar" alt="人物头像"  />
 | 
				
			||||||
      <p1>{{ item.commenter }}</p1>
 | 
					      <p1 style="margin-left: 10px;">{{ item.commenter }}</p1>
 | 
				
			||||||
      <p3 style="float: right;font-size: 12px;font-weight: 200;">{{ item.time }}</p3>
 | 
					      <p style="margin-left: 10px;">{{ item.comment }}</p>
 | 
				
			||||||
      <p>{{ item.comment }}</p>
 | 
					 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
| 
						 | 
					@ -25,7 +24,8 @@ const props = defineProps({
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  scrollSpeed: {
 | 
					  scrollSpeed: {
 | 
				
			||||||
    type: Number,
 | 
					    type: Number,
 | 
				
			||||||
    default: 20
 | 
					    // 将默认值从10修改为新的默认速度
 | 
				
			||||||
 | 
					    default: 10
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -95,10 +95,10 @@ onBeforeUnmount(() => {
 | 
				
			||||||
.containner4-alldata {
 | 
					.containner4-alldata {
 | 
				
			||||||
  height: 330px;
 | 
					  height: 330px;
 | 
				
			||||||
  overflow: hidden;
 | 
					  overflow: hidden;
 | 
				
			||||||
  
 | 
					  padding: 10px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
.containner4-data {
 | 
					.containner4-data {
 | 
				
			||||||
  color: rgba(255, 255, 255, 0.80);
 | 
					  color: rgba(0, 0, 0, 0.8);
 | 
				
			||||||
  font-family: "PingFang SC";
 | 
					  font-family: "PingFang SC";
 | 
				
			||||||
  font-size: 14px;
 | 
					  font-size: 14px;
 | 
				
			||||||
  font-style: normal;
 | 
					  font-style: normal;
 | 
				
			||||||
| 
						 | 
					@ -107,10 +107,13 @@ onBeforeUnmount(() => {
 | 
				
			||||||
  letter-spacing: 0.14px;
 | 
					  letter-spacing: 0.14px;
 | 
				
			||||||
  margin-left: 25px;
 | 
					  margin-left: 25px;
 | 
				
			||||||
  margin-top: 25px;
 | 
					  margin-top: 25px;
 | 
				
			||||||
  background-image: linear-gradient(to right,#7db4eb99, #67A4E100);
 | 
					  background-image: linear-gradient(to right,#4ea2f599, #646464);
 | 
				
			||||||
  border-radius: 8px;
 | 
					  border-radius: 8px;
 | 
				
			||||||
  cursor: pointer;
 | 
					  cursor: pointer;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					.containner4-alldata .text-content {
 | 
				
			||||||
 | 
					  margin-left: 100px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
.containner4-data img{
 | 
					.containner4-data img{
 | 
				
			||||||
  width: 24px;
 | 
					  width: 24px;
 | 
				
			||||||
  height: px;
 | 
					  height: px;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -41,10 +41,10 @@
 | 
				
			||||||
        </button>
 | 
					        </button>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
      <div class="time">
 | 
					        <div class="realtime-clock" style="position: absolute; top: 20px; right: 20px; color: #1EA0FD; font-family: LCD2; font-size: 18px;">
 | 
				
			||||||
        <img src="../assets/images/logo/time.png" alt="" style="float: right;margin-right: 250px;margin-top: -150px;">
 | 
					        {{ currentTime }}
 | 
				
			||||||
        <span>2025.06.09 08:18</span>
 | 
					 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    </header>
 | 
					    </header>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <body>
 | 
					    <body>
 | 
				
			||||||
| 
						 | 
					@ -101,8 +101,25 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script setup>
 | 
					<script setup>
 | 
				
			||||||
import { useRouter } from 'vue-router';
 | 
					import { useRouter } from 'vue-router';
 | 
				
			||||||
import { ref, onMounted } from 'vue';
 | 
					import { ref, onMounted,onUnmounted } from 'vue';
 | 
				
			||||||
import { ElLoading } from 'element-plus';
 | 
					import { ElLoading } from 'element-plus';
 | 
				
			||||||
 | 
					// 实时时钟实现
 | 
				
			||||||
 | 
					const currentTime = ref('');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 格式化时间为 HH:MM:SS 格式
 | 
				
			||||||
 | 
					const formatTime = () => {
 | 
				
			||||||
 | 
					  const now = new Date();
 | 
				
			||||||
 | 
					  return now.toLocaleTimeString('zh-CN', {
 | 
				
			||||||
 | 
					    hour: '2-digit',
 | 
				
			||||||
 | 
					    minute: '2-digit',
 | 
				
			||||||
 | 
					    second: '2-digit',
 | 
				
			||||||
 | 
					    hour12: false
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 定时器存储
 | 
				
			||||||
 | 
					const timers = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const router = useRouter();
 | 
					const router = useRouter();
 | 
				
			||||||
let loadingInstance = null;
 | 
					let loadingInstance = null;
 | 
				
			||||||
| 
						 | 
					@ -125,10 +142,12 @@ const hideLoading = () => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 页面加载完成后,显示 Loading 组件,一秒后隐藏
 | 
					// 页面加载完成后,显示 Loading 组件,一秒后隐藏
 | 
				
			||||||
onMounted(() => {
 | 
					onMounted(() => {
 | 
				
			||||||
  showLoading();
 | 
					      // 初始化时钟并每秒更新
 | 
				
			||||||
  setTimeout(() => {
 | 
					  currentTime.value = formatTime();
 | 
				
			||||||
    hideLoading();
 | 
					  const clockTimer = setInterval(() => {
 | 
				
			||||||
 | 
					    currentTime.value = formatTime();
 | 
				
			||||||
  }, 1000);
 | 
					  }, 1000);
 | 
				
			||||||
 | 
					  timers.push(clockTimer);
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 监听路由变化,跳转页面时显示 Loading 组件,一秒后隐藏
 | 
					// 监听路由变化,跳转页面时显示 Loading 组件,一秒后隐藏
 | 
				
			||||||
| 
						 | 
					@ -190,7 +209,15 @@ const selectSuggestion = (item) => {
 | 
				
			||||||
  suggestions.value = [];
 | 
					  suggestions.value = [];
 | 
				
			||||||
  console.log('选中项:', item);
 | 
					  console.log('选中项:', item);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					onUnmounted(() => {
 | 
				
			||||||
 | 
					  // 清理定时器
 | 
				
			||||||
 | 
					  timers.forEach(timer => {
 | 
				
			||||||
 | 
					    if (timer) {
 | 
				
			||||||
 | 
					      clearInterval(timer);
 | 
				
			||||||
 | 
					      clearTimeout(timer);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<style scoped>
 | 
					<style scoped>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -547,7 +547,7 @@ onBeforeUnmount(() => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<style lang="less" scoped>
 | 
					<style lang="less" scoped>
 | 
				
			||||||
.sky-page-box {
 | 
					.sky-page-box {
 | 
				
			||||||
  height: 100%;
 | 
					  height: 85%;
 | 
				
			||||||
  width: 100%;
 | 
					  width: 100%;
 | 
				
			||||||
  min-width: 600px;
 | 
					  min-width: 600px;
 | 
				
			||||||
  min-height: 600px;
 | 
					  min-height: 600px;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||