From 06b2f5be922e87d086d1d4e6cdcc2119e7d3a1a4 Mon Sep 17 00:00:00 2001 From: k94314517 <8417338+k94314517@user.noreply.gitee.com> Date: 星期三, 09 七月 2025 14:36:24 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- screen/src/views/FireFighting.vue | 2004 ++++++++++++++++++++++++++++++++++------------------------ 1 files changed, 1,170 insertions(+), 834 deletions(-) diff --git a/screen/src/views/FireFighting.vue b/screen/src/views/FireFighting.vue index b9b4b1f..04190af 100644 --- a/screen/src/views/FireFighting.vue +++ b/screen/src/views/FireFighting.vue @@ -1,10 +1,11 @@ <template> <v-scale-screen width="1920" height="960"> <div class="main_app"> - <img src="@/assets/images/FireFighting/bg@2x.png" class="main_bg" alt="" /> + <!-- <img src="@/assets/images/FireFighting/bg@2x.png" class="main_bg" alt="" /> --> + <img src="@/assets/images/SecurityControl/bg@2x_2.png" class="main_bg" alt="" /> <div class="main_header"> <img src="@/assets/images/maintitle.gif" class="main_header_bg" alt="" /> - <div class="title">瀹夋嘲鏅烘収鐗╂祦鍥尯-娑堥槻鎬佸娍鐩戞帶</div> + <div class="title">瀹夋嘲鏅烘収鐗╂祦鍥尯-鏅烘収娑堥槻绠℃帶</div> <div class="time_wrap"> <span class="date">{{ date }}</span> <span class="week">{{ week }}</span> @@ -13,182 +14,228 @@ </div> <div class="main_content"> <div class="left_box"> - <div class="left_box_one"> - <div class="com_header"> - <div class="title"> - <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" /> - <div>浠婃棩鍚勭郴缁熻澶囩姸鎬佸強鍛婅鏁�</div> - </div> - <img src="@/assets/images/title@2x.png" class="bg" alt="" /> - </div> - <div class="list_wrap"> - <div class="list"> - <div class="header line"> - <span class="item name">璁惧绫诲瀷</span> - <span class="item">鎬绘暟</span> - <span class="item">鎶ヨ</span> - <span class="item">灞忚斀</span> - <span class="item">鏁呴殰</span> - <span class="item">绂荤嚎</span> - </div> - <template v-for="(item, i) in dataList1" :key="i"> - <div class="line"> - <span class="item name">{{ item.deviceTypeName }}</span> - <span class="item">{{ item.statusTotal }}</span> - <span class="item">{{ item.alarmNum }}</span> - <span class="item">{{ item.shieldNum }}</span> - <span class="item">{{ item.errNum }}</span> - <span class="item">{{ item.offlineNum }}</span> - </div> - <div class="separate"></div> - </template> - </div> - </div> - </div> - <div class="left_box_two"> - <div class="com_header"> - <div class="title"> - <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" /> - <div>鎶ヨ淇℃伅</div> - </div> - <img src="@/assets/images/title@2x.png" class="bg" alt="" /> - </div> - <div class="police_wrap"> - <div class="item" v-for="(item, i) in dataList2"> - <div class="head"> - <div class="name">{{ item.name }}</div> - <div class="name">{{ item.num }}娆�</div> - </div> - <FirePercent :color="policeColors[i]" :rate="item.rate" /> - </div> + <div class="left_box_top"> + <div class="left_box_top_znz"> + <img src="@/assets/images/ic_compass@2x.png" alt="" /> </div> - </div> - <div class="left_box_three"> - <div class="com_header"> - <div class="title"> - <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" /> - <div>鍛婅澶勭悊鍒嗘瀽</div> + + <div class="left_box_top_left"> + <div class="left_box_one"> + <div class="com_header"> + <div class="title"> + <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" /> + <div>娑堥槻璁惧/璁炬柦绠$悊</div> + </div> + <img src="@/assets/images/title@2x.png" class="bg" alt="" /> + </div> + <div class="left_content"> + <div class="tips"> + <div class="tips_title"> + <img src="@/assets/images/SecurityControl/ic_title_green@2x.png" alt=""> + <span>鏈勾娑堥槻璁惧/璁炬柦缁翠繚鎯呭喌</span> + </div> + </div> + + <div class="content_wrap"> + <div class="list"> + <div class="item"> + <div>宸茬淮淇�</div> + <div class="num active">{{ dataList5.protectNum || 0 }}</div> + </div> + <div class="separate"></div> + <div class="item"> + <div>璁″垝缁翠繚</div> + <div class="num acc">{{ dataList5.planProtectTotal || 0 }}</div> + </div> + <div class="separate"></div> + <div class="item"> + <div>缁翠繚鐜�</div> + <div v-if="dataList5.protectNum && dataList5.planProtectTotal" class="acc num">{{ + ((dataList5.protectNum / dataList5.planProtectTotal) * 100).toFixed(0) }}%</div> + <div v-else class="acc num">0%</div> + </div> + </div> + <div class="footer"> + <img src="@/assets/images/FireFighting/ic_weixiu@2x.png" class="icon" alt=""> + <div class="content"> + <div>鏈湀鏂板缁翠繚</div> + <div class="num">{{ dataList5.monthAddNum }} <span>涓�</span></div> + </div> + </div> + </div> + + <div class="tips"> + <div class="tips_title"> + <img src="@/assets/images/SecurityControl/ic_title_green@2x.png" alt=""> + <span>绯荤粺璁惧鐘舵��</span> + </div> + </div> + + <div class="list_wrap"> + <div class="list"> + <div class="header line"> + <span class="item name" style="color: #FFFFFF;">璁惧鍚嶇О</span> + <span class="item">鎬绘暟</span> + <span class="item">鎶ヨ</span> + <span class="item">灞忚斀</span> + <span class="item">鏁呴殰</span> + <span class="item">姝e父</span> + </div> + <div class="one-swiper list_content"> + <div class="swiper-wrapper"> + <div class="line_wrap one-swiper-slide swiper-slide" v-for="(item, i) in dataList1"> + <div class="line"> + <span class="item name">{{ item.typeName }}</span> + <span class="item">{{ item.totalDeviceNum || 0 }}</span> + <span class="item" style="color: #FEAF01;">{{ item.alarmDeviceNum || 0 }}</span> + <span class="item">{{ item.shieldDeviceNum || 0 }}</span> + <span class="item">{{ item.errDeviceNum || 0 }}</span> + <span class="item">{{ item.onlineDeviceNum || 0 }}</span> + </div> + <div class="separate"></div> + </div> + </div> + </div> + </div> + <div class="list_wrap_footer" v-if="dataList1.length > 0"> + <div class="wrap_footer_item name" style="color: #fff;">鎬昏</div> + <div class="wrap_footer_item">{{sum(dataList1, 'totalDeviceNum')}}</div> + <div class="wrap_footer_item">{{sum(dataList1, 'alarmDeviceNum')}}</div> + <div class="wrap_footer_item">{{sum(dataList1, 'shieldDeviceNum')}}</div> + <div class="wrap_footer_item">{{sum(dataList1, 'errDeviceNum')}}</div> + <div class="wrap_footer_item">{{sum(dataList1, 'onlineDeviceNum')}}</div> + <div class="separate"></div> + </div> + </div> + </div> </div> - <img src="@/assets/images/title@2x.png" class="bg" alt="" /> </div> - <div class="dispose_wrap"> - <div class="echart2" id="echart2"></div> - </div> - </div> - </div> - <div class="center_box"> - <div class="center_box_one"> - <div class="static_wrap"> - <div class="item"> - <img src="@/assets/images/FireFighting/xiaofang_ic_zaixian@2x.png" alt=""> - <div class="content"> - <div class="name">鍦ㄧ嚎</div> - <div class="num">{{ dataList4.onlineDeviceNum }}</div> - </div> - </div> - <div class="item"> - <img src="@/assets/images/FireFighting/xiaofang_ic_baojing@2x.png" alt=""> - <div class="content"> - <div class="name">鎶ヨ</div> - <div class="num num2">{{ dataList4.alarmDeviceNum }}</div> - </div> - </div> - <div class="item"> - <img src="@/assets/images/FireFighting/xiaofang_ic_guzhang@2x.png" alt=""> - <div class="content"> - <div class="name">鏁呴殰</div> - <div class="num num3">{{ dataList4.errDeviceNum }}</div> - </div> - </div> - <div class="item"> - <img src="@/assets/images/FireFighting/xiaofang_ic_lixian@2x.png" alt=""> - <div class="content"> - <div class="name">绂荤嚎</div> - <div class="num num4">{{ dataList4.offlineDeviceNum }}</div> - </div> - </div> - <div class="item"> - <img src="@/assets/images/FireFighting/xiaofang_ic_pingbi@2x.png" alt=""> - <div class="content"> - <div class="name">灞忚斀</div> - <div class="num num5">{{ dataList4.shieldDeviceNum }}</div> + <div class="left_box_top_right"> + <div class="center_box_one"> + <div class="static_wrap"> + <div class="item"> + <img src="@/assets/images/FireFighting/xiaofang_ic_baojing@2x.png" alt=""> + <div class="content"> + <div class="name">鎶ヨ鎬绘暟</div> + <div class="num">{{ dayData.totalNum || 0 }}</div> + </div> + </div> + <div class="item"> + <img src="@/assets/images/FireFighting/xiaofang_ic_guzhang@2x.png" alt=""> + <div class="content"> + <div class="name">鏈鐞�</div> + <div class="num num2">{{ dayData.processingNum || 0 }}</div> + </div> + </div> + <div class="item"> + <img src="@/assets/images/FireFighting/xiaofang_ic_zhengchang@2x.png" alt=""> + <div class="content"> + <div class="name">宸插鐞�</div> + <div class="num num5">{{ dayData.liftNum || 0 }}</div> + </div> + </div> </div> </div> </div> </div> - <div class="center_box_two"> - <div class="content_wrap"> - <div class="header"> - <div class="left"> - <img class="icon" src="@/assets/images/FireFighting/468@2x.png" alt=""> - <span>娓╁害/婀垮害浼犳劅鍣�</span> - </div> - <div class="right"> - <img class="icon" src="@/assets/images/FireFighting/xiaofang_ar_left@2x.png" alt=""> - <div class="num">1/5</div> - <img class="icon" src="@/assets/images/FireFighting/xiaofang_ar_right@2x.png" alt=""> - </div> - </div> - <div class="list_wrap"> + <div class="left_box_bottom"> + <div class="left_box_three"> + <div class="com_header"> <div class="title"> - <img class="icon" src="@/assets/images/FireFighting/ic_location@2x.png" alt=""> - <span>鍗歌揣鍖�1</span> + <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" /> + <div>娑堥槻鎬佸娍鎰熺煡</div> </div> - <div class="list"> - <div class="item"> - <img class="icon" src="@/assets/images/FireFighting/ic_wendu@2x.png" alt=""> - <div class="content"> - <div class="num">23<span>掳C</span></div> - <div class="la">闃堝�� 0锝�100掳C</div> - </div> - </div> - <div class="item"> - <img class="icon" src="@/assets/images/FireFighting/ic_shidu@2x.png" alt=""> - <div class="content"> - <div class="num">23<span>%</span></div> - <div class="la">闃堝�� 0锝�100%</div> - </div> - </div> - </div> + <img src="@/assets/images/title@2x.png" class="bg" alt="" /> </div> - </div> - <div class="content_wrap"> - <div class="header"> - <div class="left"> - <img class="icon" src="@/assets/images/FireFighting/468@2x.png" alt=""> - <span>瀹炴椂浼犳劅鍣ㄦ娴�</span> - </div> - <div class="right"> - <img class="icon" src="@/assets/images/FireFighting/xiaofang_ar_left@2x.png" alt=""> - <div class="num">1/5</div> - <img class="icon" src="@/assets/images/FireFighting/xiaofang_ar_right@2x.png" alt=""> - </div> - </div> - <div class="list_wrap"> - <div class="title_wrap"> - <div class="title"> - <img class="icon" src="@/assets/images/FireFighting/ic_location@2x.png" alt=""> - <span>1璺�/姘村帇</span> - </div> - <div class="title"> - <img class="icon" src="@/assets/images/FireFighting/ic_location@2x.png" alt=""> - <span>2璺�/娑蹭綅</span> - </div> - </div> - <div class="list"> - <div class="watergage_wrap"> - <div class="watergage" id="watergage"></div> - <div class="unit">2.50 <span>Mpa</span></div> - <div class="place">闃堝�� 0锝�2.5Mpa</div> - </div> - <div class="item"> - <div class="liquidlevel_wrap"> - <div class="liquidlevel" id="liquidlevel"></div> - <div class="unit">3.45 <span>M</span></div> - <div class="place">闃堝�� 0锝�4.50M</div> - </div> + <div class="bottom_content"> + + <div class="bottom_content_left" v-if="dataList8 && dataList8.length > 0"> + + <div class="tips"> + <div class="tips_title"> + <img src="@/assets/images/SecurityControl/ic_title_green@2x.png" alt=""> + <span>閲嶇偣鍖哄煙娓╁害鐩戞祴</span> + </div> + <div class="right"> + <img @click="changeData8(-1)" class="icon" src="@/assets/images/FireFighting/xiaofang_ar_left@2x.png" + alt=""> + <div class="num">{{ dataList8[dataIndex8].humidityData.name }}</div> + <img @click="changeData8(1)" class="icon" src="@/assets/images/FireFighting/xiaofang_ar_right@2x.png" + alt=""> + </div> + </div> + + <div class="list_wrap"> +<!-- <div class="title">--> +<!-- <img class="icon" src="@/assets/images/FireFighting/ic_location@2x.png" alt="">--> +<!-- <span v-if="dataList8 && dataList8.length > 0">{{ dataList8[dataIndex8].humidityData.name }}</span>--> +<!-- </div>--> + <div class="list" v-if="dataList8 && dataList8.length > 0"> + <div class="item"> + <img class="icon" src="@/assets/images/FireFighting/ic_wendu@2x.png" alt=""> + <div class="content"> + <div class="num" + v-if="dataList8[dataIndex8].temperatureData && dataList8[dataIndex8].temperatureData.latestValue"> + {{ Number(dataList8[dataIndex8].temperatureData.latestValue).toFixed(1) }}<span>掳C</span></div> + <div class="la">闃堝�� {{ dataList8[dataIndex8].temperatureData?.alarmLow }}锝瀧{ + dataList8[dataIndex8].temperatureData?.alarmHigh }}掳C</div> + </div> + </div> + <div class="item"> + <img class="icon" src="@/assets/images/FireFighting/ic_shidu@2x.png" alt=""> + <div class="content"> + <div class="num" + v-if="dataList8[dataIndex8].humidityData && dataList8[dataIndex8].humidityData.latestValue">{{ + Number(dataList8[dataIndex8].humidityData.latestValue).toFixed(1) }}<span>%</span></div> + <div class="la">闃堝�� {{ dataList8[dataIndex8].humidityData?.alarmLow }}锝瀧{ + dataList8[dataIndex8].humidityData?.alarmHigh }}%</div> + </div> + </div> + </div> + </div> + + </div> + <div class="bottom_content_right"> + + <div class="tips"> + <div class="tips_title"> + <img src="@/assets/images/SecurityControl/ic_title_green@2x.png" alt=""> + <span>姘村帇姘翠綅鐩戞祴</span> + </div> + <div class="right"> + <img @click="changeData9(-1)" class="icon" src="@/assets/images/FireFighting/xiaofang_ar_left@2x.png" + alt=""> + <div class="num">{{ dataIndex9 + 1 }}/{{ dataTotal9 }}</div> + <img @click="changeData9(1)" class="icon" src="@/assets/images/FireFighting/xiaofang_ar_right@2x.png" + alt=""> + </div> + </div> + + <div class="list_wrap2"> + <div class="item" v-for="(item, i) in dataListTemp9" :key="i"> + <div class="watergage_wrap" v-if="item.obj.typeCode == 253958"> + <div class="watergage" :id="'watergage' + i"></div> + </div> + <div v-if="item.obj.typeCode == 254001" class="liquidlevel_wrap"> + <img src="@/assets/images/size.png" alt="" class="size" /> + <div class="liquidlevel" :id="'liquidlevel' + i"></div> + </div> + <div class="list_wrap2_info"> + <div class="title"> + <img class="icon" src="@/assets/images/FireFighting/ic_location@2x.png" alt=""> + <span>{{ item.name }}</span> + </div> + <div class="unit"> + <span>{{ item.obj.value.substring(0, item.obj.value.indexOf('M')) }}</span> + <span>{{ item.obj.value.substring(item.obj.value.indexOf('M'), item.obj.value.length) }}</span> + </div> + <div class="place">闃堝�� {{ item.level }}</div> + </div> + </div> + <div class="item1"></div> + <div class="item1"></div> </div> </div> </div> @@ -200,94 +247,92 @@ <div class="com_header"> <div class="title"> <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" /> - <div>鏈勾娑堥槻璁惧/璁炬柦缁翠繚鎯呭喌</div> + <div>娑堥槻鎶ヨ闂幆绠$悊</div> </div> <img src="@/assets/images/title@2x.png" class="bg" alt="" /> </div> - <div class="content_wrap"> - <div class="list"> - <div class="item"> - <div>宸茬淮淇�</div> - <div class="num active">{{ dataList5.protectNum }}</div> + <div class="right_content"> + <div class="tips"> + <div class="tips_title"> + <img src="@/assets/images/SecurityControl/ic_title_green@2x.png" alt=""> + <span> + <template v-if="dateType === '1'">鏈湀</template> + <template v-else-if="dateType === '2'">鏈勾</template> + <template v-else>浠婃棩</template>鎶ヨ + </span> </div> - <div class="separate"></div> - <div class="item"> - <div>璁″垝缁翠繚</div> - <div class="num active">{{ dataList5.planProtectTotal }}</div> - </div> - <div class="separate"></div> - <div class="item"> - <div>缁翠繚鐜�</div> - <div v-if="dataList5.protectNum && dataList5.planProtectTotal" class="num active">{{ ((dataList5.protectNum / dataList5.planProtectTotal) * 100).toFixed(0) }}%</div> + <div class="tips_cates"> + <div :class="!dateType ? 'tips_cates_row active' : 'tips_cates_row'" @click="getData2('')">浠婃棩</div> + <div class="tips_cates_x">|</div> + <div :class="dateType === '1' ? 'tips_cates_row active' : 'tips_cates_row'" @click="getData2('1')">鏈湀</div> + <div class="tips_cates_x">|</div> + <div :class="dateType === '2' ? 'tips_cates_row active' : 'tips_cates_row'" @click="getData2('2')">鏈勾</div> </div> </div> - <div class="footer"> - <img src="@/assets/images/FireFighting/ic_weixiu@2x.png" class="icon" alt=""> - <div class="content"> - <div>鏈湀鏂板缁翠繚</div> - <div class="num">{{ dataList5.monthAddNum }} <span>涓�</span></div> - </div> - </div> - </div> - </div> - <div class="right_box_two"> - <div class="com_header"> - <div class="title"> - <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" /> - <div>浠婃棩闅愭偅/鍛婅</div> - </div> - <img src="@/assets/images/title@2x.png" class="bg" alt="" /> - </div> - <div class="su_title"> - <img class="icon" src="@/assets/images/FireFighting/ic_title_green@2x.png" alt=""> - <div class="name">闅愭偅闅忔墜鎷�</div> - </div> - <div class="static_wrap"> - <div class="item"> - <img src="@/assets/images/FireFighting/ic_tibao@2x.png" alt=""> - <div class="content"> - <div class="name">鎻愭姤闅愭偅鏁�</div> - <div class="num"><span>{{ dataList4.todayDangerNum }}</span>涓�</div> - </div> - </div> - <div class="item"> - <img src="@/assets/images/FireFighting/ic_chuli@2x.png" alt=""> - <div class="content"> - <div class="name">澶勭悊闅愭偅鏁�</div> - <div class="num"><span class="today">{{ dataList4.dealDangerNum }}</span>涓�</div> - </div> - </div> - </div> - <div class="su_title"> - <img class="icon" src="@/assets/images/FireFighting/ic_title_green@2x.png" alt=""> - <div class="name">鍛婅淇℃伅</div> - </div> - <div class="list"> - <div class="item" v-for="i in 5"> - <div class="icon"> - <div class="circle"></div> - <div class="line"></div> - </div> - <div class="content"> - <div class="header"> - <div class="time"> - <span>123</span> - <span class="status">澶勭悊涓�</span> - </div> - <div class="have_time">宸茬粡鍙戠敓<span>1</span>鍒嗛挓</div> + + <div class="police_wrap"> + <div class="item" v-for="(item, i) in dataList2"> + <div class="head"> + <div class="name">{{ item.name }}</div> + <div class="name">{{ item.num }}娆�</div> </div> - <div class="wrap"> - <div class="title"> - <img class="xf" src="@/assets/images/FireFighting/ic_gaojing_red@2x.png" alt=""> - <span>娑堥槻璀﹀憡</span> + <FirePercent :color="policeColors[i]" :rate="item.rate" /> + </div> + </div> + + <div class="dispose_wrap"> + <div class="tips"> + <div class="tips_title"> + <img src="@/assets/images/SecurityControl/ic_title_green@2x.png" alt=""> + <span>鎶ヨ瓒嬪娍</span> + </div> + </div> + <div class="echart2" id="echart2"></div> + </div> + + <div class="tips"> + <div class="tips_title"> + <img src="@/assets/images/SecurityControl/ic_title_green@2x.png" alt=""> + <span>鎶ヨ鏄庣粏</span> + </div> + </div> + + <div class="list two-swiper"> + <div class="swiper-wrapper"> + <div class="item two-swiper-slide swiper-slide" v-for="(item, i) in dataList7" :key="i"> + <div class="icon"> + <div class="circle"></div> + <div class="line"></div> </div> - <div class="title"> - <img class="addr" src="@/assets/images/FireFighting/xiaofang_ic_weizhi@2x.png" alt=""> - <span>A鍘傛埧3杞﹂棿闂ㄥ彛</span> + <div class="content"> + <div class="header"> + <div class="time"> + <span>{{ item.alarmTime }}</span> + <span class="status" v-if="item.handleStatus == 1">宸叉牳瀹�</span> + <span class="status" v-else-if="item.handleStatus == 2">鏈牳瀹�</span> + <span class="status" v-else-if="item.handleStatus == 3">鏍稿疄涓�</span> + <span v-else class="status">鏈牳瀹�</span> + </div> + <div class="have_time">宸插彂鐢焮{ item.haveTime }}</div> + </div> + <div class="wrap"> + <div class="title"> + <img class="xf" src="@/assets/images/FireFighting/ic_gaojing_red@2x.png" alt=""> + <span>{{ item.alarmTypeName }}</span> + </div> + <div class="title"> + <img class="addr" src="@/assets/images/FireFighting/xiaofang_ic_weizhi@2x.png" alt=""> + <span>{{ item.regionName }}</span> + </div> + </div> </div> + </div> + <div v-if="dataList7.length == 0" style="margin-top: 50px;" class="empty_wrap"> + <img src="@/assets/images/default_empty.png" alt=""> </div> </div> </div> + </div> </div> </div> @@ -297,17 +342,24 @@ </template> <script setup> -import { ref, onMounted } from 'vue' +import { ref, onMounted, nextTick } from 'vue' import VScaleScreen from 'v-scale-screen' import FirePercent from '@/components/FirePercent.vue' import dayjs from 'dayjs' +import duration from 'dayjs/plugin/duration' +dayjs.extend(duration) import * as echarts from 'echarts' +import 'swiper/css/swiper.min.css' +import Swiper from 'swiper' import { getFightingalarmData, getFightingHandle, getFightingcenterData, getFightingDeAlarm, getFightingDeviceY, + getFighalarmDataList, + getTemperatureHumidityData, + monitorDataListP } from '@/api' const colors = ['#FEAF01', '#01ABFE', '#51F9E4'] @@ -315,6 +367,7 @@ const date = ref(dayjs().format('YYYY.MM.DD')) const week = ref(weekMap[new Date().getDay()]) const time = ref(dayjs().format('HH:mm:ss')) +var dateType = ref('') setInterval(() => { date.value = dayjs().format('YYYY-MM-DD') week.value = weekMap[new Date().getDay()] @@ -323,11 +376,24 @@ }, 1000) -const initWatergage = () => { - const myChart = echarts.init(document.getElementById('watergage')) - var data_value = 2 +const initWatergage = (id, item) => { + const myChart = echarts.init(document.getElementById(id)) + var data_value = item.obj.value.replaceAll('Mpa', '') + // const startI = item.level.indexOf('-') + // const endI = item.level.indexOf('Mpa') + // let maxNum = item.level.slice(startI + 1, endI) + // let minNum = item.level.slice(0, startI) + let maxNum = item.max + let minNum = item.min + // let maxNum = const option = { barMaxWidth: 3, + mapLocation: { + x: '0', + y: '0', + width: '100%', + height: '100%' + }, polar: { radius: '80%' }, @@ -352,8 +418,8 @@ series: [ { type: 'gauge', - min: 0, - max: 2.50, + min: minNum, + max: maxNum, splitNumber: 5, radius: '100%', center: ['50%', '50%'], @@ -485,9 +551,19 @@ myChart.resize() }) } -const initLiquidlevel = () => { - const myChart = echarts.init(document.getElementById('liquidlevel')) - var data = 65 +const initLiquidlevel = (id, item) => { + const myChart = echarts.init(document.getElementById(id)) + // const startI = item.level.indexOf('-') + // const endI = item.level.indexOf('M') + // let maxNum = item.level.slice(startI + 1, endI) + // let minNum = item.level.slice(0, startI) + let maxNum = item.max + let minNum = item.min + let conNum = maxNum + let acNum = item.obj.value.replaceAll('M', '') + var data = (((acNum - minNum) / conNum) * 100).toFixed(0) + console.log('data', data) + const option = { tooltip: { trigger: 'none', @@ -525,7 +601,7 @@ { name: '鏈�涓婂眰绔嬩綋鍦�', type: 'pictorialBar', - symbolSize: [260, 40], + symbolSize: [182, 40], symbolOffset: [0, -20], z: 12, itemStyle: { @@ -543,7 +619,7 @@ { name: '涓棿绔嬩綋鍦�', type: 'pictorialBar', - symbolSize: [260, 40], + symbolSize: [182, 40], symbolOffset: [0, -20], z: 12, itemStyle: { @@ -576,7 +652,7 @@ { name: '鏈�搴曢儴绔嬩綋鍦�', type: 'pictorialBar', - symbolSize: [260, 40], + symbolSize: [182, 40], symbolOffset: [0, 20], z: 12, itemStyle: { @@ -625,9 +701,9 @@ label: { distance: 15, show: true, - position: data > 58 ? 'inside' : 'top', + position: data > 52 ? 'inside' : 'top', formatter: '{c}' + '%', - fontSize: 80, + fontSize: 72, color: '#1AFCFF', textShadowColor: '#03C7F9', textShadowBlur: 30, @@ -689,21 +765,25 @@ } const dataList1 = ref([]) -const getData1 = () => { - getFightingDeAlarm().then(res => { - dataList1.value = res.data +const policeColors = ['#FE5501', '#01D9FE', '#01FE9D', '#FFF306'] +const dataList2 = ref([]) +let dayData = ref([]) + +const getDayData = () => { + getFightingalarmData().then(res => { + dayData.value = res.data || {} }) } -const policeColors = ['#01D9FE', '#FE5501', '#0193FE', '#28F0C4'] -const dataList2 = ref([]) -const getData2 = () => { - getFightingalarmData().then(res => { + +const getData2 = (type) => { + dateType.value = type + getFightingalarmData({ type: dateType.value }).then(res => { const result = res.data || {} let temp = [] - temp.push({ name: '鐪熷疄鎶ヨ鏁�', num: result.realNum, rate: (result.realNum / result.totalNum) * 100 }) + temp.push({ name: '宸插鐞�', num: result.liftNum, rate: (result.liftNum / result.totalNum) * 100 }) + temp.push({ name: '鏈鐞�', num: result.processingNum, rate: (result.processingNum / result.totalNum) * 100 }) + temp.push({ name: '姝f姤璀︽暟', num: result.liftNum - result.errNum, rate: ((result.liftNum - result.errNum) / result.totalNum) * 100 }) temp.push({ name: '璇姤璀︽暟', num: result.errNum, rate: (result.errNum / result.totalNum) * 100 }) - temp.push({ name: '宸茶В闄�', num: result.liftNum, rate: (result.liftNum / result.totalNum) * 100 }) - temp.push({ name: '澶勭悊涓�', num: result.processingNum, rate: (result.processingNum / result.totalNum) * 100 }) dataList2.value = temp }) } @@ -717,25 +797,28 @@ } const initEchart2 = () => { var myChart = echarts.init(document.querySelector('.echart2')) - // 鐢熸垚鏁版嵁鍜屾棩鏈� // 绀轰緥鏁版嵁 - const data1 = dataList3.value.map(i => i.alarmNum) + const data1 = dataList3.value.map(i => i.realNum) const data2 = dataList3.value.map(i => i.processingNum) const data3 = dataList3.value.map(i => i.liftNum) - const data4 = dataList3.value.map(i => i.errNum) + const months = dataList3.value.map(i => { + return i.startDate.substring(5, 7) + '鏈�' + }) + + const option = { legend: { - x: "center", + x: "right", textStyle: { - color: "#FFFFFF", // 鍥句緥鏂囧瓧璁句负鐧借壊 + color: "#FFFFFF", fontSize: 12 }, icon: 'circle', - top: '6%', - itemWidth: 8, - itemHeight: 8, + top: '0', + itemWidth: 10, + itemHeight: 10, itemGap: 20, - data: ['鍛婅鏁�', '杩涜涓�', '宸插鐞�', '璇姤鏁�'] // 鏇存柊鍥句緥鍚嶇О + data: ['鎶ヨ鏁�', '鏈鐞�', '宸插鐞�'] }, grid: { left: '2%', @@ -756,14 +839,14 @@ borderColor: "rgba(219, 230, 255, 0.8)", }, xAxis: { - data: dataList3.value.map(i => i.monthStr), + data: months, axisLabel: { color: "#FFFFFF", // X 杞存枃瀛楄涓虹櫧鑹� - fontSize: 14, + fontSize: 13, }, axisLine: { lineStyle: { - color: '#1E294C' + color: '#D2E0FF' } }, axisTick: { @@ -778,7 +861,7 @@ }, axisLine: { lineStyle: { - color: '#A9AEB2' + color: '#D2E0FF' } }, axisTick: { @@ -796,7 +879,7 @@ }, series: [ { - name: "鍛婅鏁�", + name: "鎶ヨ鏁�", type: "bar", stack: "attendance", data: data1, @@ -813,12 +896,12 @@ barWidth: 6, }, { - name: "杩涜涓�", // 杩熷埌鏁版嵁 + name: "鏈鐞�", // 杩熷埌鏁版嵁 type: "bar", stack: "attendance", data: data2, itemStyle: { - color: '#28F0C4', // 杩熷埌鐨勯鑹� + color: '#FE5501', // 杩熷埌鐨勯鑹� }, label: { show: false, @@ -834,7 +917,7 @@ stack: "attendance", data: data3, itemStyle: { - color: '#0193FE', // 璇峰亣鐨勯鑹� + color: '#01D9FE', // 璇峰亣鐨勯鑹� }, label: { show: false, @@ -843,19 +926,7 @@ emphasis: { focus: "series", }, - }, - { - name: "璇姤鏁�", // 鍗曠嫭鐨勫姞鐝煴瀛� - type: "bar", - data: data4, - barWidth: 6, - itemStyle: { - color: '#FEED01', // 楂樹寒鐨勭传鑹� - }, - emphasis: { - focus: "series", - }, - }, + } ], } myChart.setOption(option) @@ -868,6 +939,7 @@ const getData4 = () => { getFightingcenterData().then(res => { dataList4.value = res.data || {} + dataList1.value = res.data.deviceTypeList }) } const dataList5 = ref({}) // 缁翠繚 @@ -878,29 +950,215 @@ } const dataList6 = ref([]) const getData6 = () => { - getFightingHandle({type: 1}).then(res => { + getFightingHandle({ type: 1 }).then(res => { dataList6.value = res.data + }) +} +const dataList7 = ref([]) +const getData7 = () => { + getFighalarmDataList().then(res => { + dataList7.value = res.data || [] + dataList7.value = dataList7.value.map(item => { + let times = new Date().getTime() - new Date(item.alarmTime).getTime() + if (times > 86400000) { + item.haveTime = dayjs.duration(times).format('D澶〩灏忔椂m鍒嗛挓') + } else if (times > 3600000) { + item.haveTime = dayjs.duration(times).format('H灏忔椂m鍒嗛挓') + } else { + item.haveTime = dayjs.duration(times).format('m鍒嗛挓') + } + return item + }) + }) +} + +const dataList8 = ref([]) +const dataIndex8 = ref(0) + +const dataList9 = ref([]) +const dataListTemp9 = ref([]) +const dataIndex9 = ref(0) +const dataTotal9 = ref(0) + +const getData8 = () => { + getTemperatureHumidityData().then(res => { + dataList8.value = res.data || [] + }) + monitorDataListP().then(res => { + dataList9.value = res.data || [] + dataList9.value.forEach(item => { + if (item.dataList && item.dataList.length > 0) { + item.obj = item.dataList[0] + } + }) + if (dataList9.value.length > 0) { + dataTotal9.value = Math.ceil(dataList9.value.length / 4) + dataListTemp9.value = dataList9.value.slice(0, 4) + } + console.log(dataListTemp9.value) + initEcharts9() + }) +} +const changeData8 = (num) => { + if (dataIndex8.value == dataList8.value.length - 1 && num > 0) { + dataIndex8.value = 0 + } else if (dataIndex8.value == 0 && num < 0) { + dataIndex8.value = dataList8.value.length - 1 + } else { + dataIndex8.value = dataIndex8.value + num + } +} +const changeData9 = (num) => { + // return + if (dataIndex9.value == dataTotal9.value - 1 && num > 0) { + dataIndex9.value = 0 + dataListTemp9.value = dataList9.value.slice(0, 4) + } else if (dataIndex9.value == 0 && num < 0) { + dataIndex9.value = dataTotal9.value - 1 + dataListTemp9.value = dataList9.value.slice(dataList9.value.length - 4, dataList9.value.length) + } else { + dataIndex9.value = dataIndex9.value + num + dataListTemp9.value = dataList9.value.slice(dataIndex9.value * 4, (dataIndex9.value + 1) * 4) + } + initEcharts9() +} +const initEcharts9 = () => { + dataListTemp9.value.forEach((item, i) => { + + if (item.obj && item.obj.typeCode == 253958) { + nextTick(() => { + initWatergage('watergage' + i, item) + }) + } + if (item.obj && item.obj.typeCode == 254001) { + nextTick(() => { + initLiquidlevel('liquidlevel' + i, item) + }) + } + }) +} + + +const autoplayFlag = (list = [], leng = 4, time = 2000) => { + if (list.length > leng) { + return { delay: time, disableOnInteraction: false } + } else { + return false + } +} + +const sum = (array, field) => { + return array.reduce((accumulator, currentValue) => { + return accumulator + currentValue[field]; + }, 0); +} + +const loopFn1 = () => { + var newSwiper1 = new Swiper('.one-swiper', { + initialSlide: 0, + direction: 'vertical', //绔栫洿鏂瑰悜 + slidesPerView: 5, + autoplay: autoplayFlag(dataList1.value, 5, 4000), + observer: true, //淇敼swiper鑷繁鎴栧瓙鍏冪礌鏃讹紝鑷姩鍒濆鍖杝wiper + }) +} +const loopFn2 = () => { + var newSwiper1 = new Swiper('.two-swiper', { + initialSlide: 0, + direction: 'vertical', //绔栫洿鏂瑰悜 + slidesPerView: 3, + autoplay: autoplayFlag(dataList7.value, 3, 4000), + observer: true, //淇敼swiper鑷繁鎴栧瓙鍏冪礌鏃讹紝鑷姩鍒濆鍖杝wiper }) } onMounted(() => { - getData1() + getDayData() getData2() getData3() getData4() getData5() - getData6() - - initWatergage() - initLiquidlevel() + getData7() + getData8() + setInterval(() => { + getData2() + getData3() + getData4() + getData7() + }, 60 * 1000) + setInterval(() => { + getData5() + getData8() + }, 60 * 60 * 1000) + setInterval(() => { + changeData8(1) + changeData9(1) + }, 1000 * 5) + setTimeout(() => { + loopFn1() + loopFn2() + }, 12000) }) - - </script> <style lang="scss" scoped> div { box-sizing: border-box; +} +.tips { + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + .tips_title { + flex-shrink: 0; + display: flex; + align-items: center; + margin-right: 30px; + img { + width: 17px; + height: 17px; + margin-right: 7px; + } + span { + font-weight: 500; + font-size: 16px; + color: #FFFFFF; + } + } + .tips_cates { + display: flex; + align-items: center; + .tips_cates_row { + font-weight: 600; + font-size: 14px; + color: #D2E0FF; + cursor: pointer; + } + .tips_cates_x { + margin: 0 8px; + font-weight: 600; + font-size: 14px; + color: #D2E0FF; + } + .active { + color: #0094EB !important; + } + } + .right { + display: flex; + align-items: center; + + .num { + margin: 0 5px; + } + + .icon { + width: 30px; + cursor: pointer; + /* height: 16px; */ + } + } } .main_content { @@ -908,99 +1166,482 @@ padding: 20px 25px 0; .left_box { - width: 450px; + /*width: 450px;*/ + flex: 1; + margin-right: 20px; - .left_box_one { + .left_box_top { width: 100%; - margin-bottom: 20px; + display: flex; + align-items: start; + position: relative; - .list_wrap { - padding: 10px 0; - height: 227px; - overflow: auto; + .left_box_top_znz { + width: 68px; + height: 68px; + position: absolute; + right: 0; + top: 120px; + img { + width: 100%; + height: 100%; + } + } - .list { - .line { - display: flex; - height: 32px; - align-items: center; - font-size: 14px; + .left_box_top_left { + width: 450px; + flex-shrink: 0; - .item { - flex: 1; - display: flex; - justify-content: center; - align-items: center; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; + .left_box_one { + width: 100%; + margin-bottom: 20px; + + .left_content { + width: 100%; + height: 549px; + padding: 20px; + box-sizing: border-box; + background: rgba(255,255,255,0.03); + + .list_wrap { + padding: 10px 0; + + .list_wrap_footer { + width: 100%; + height: 40px; + display: flex; + align-items: center; + position: relative; + .separate { + position: absolute; + bottom: 0; + left: 0; + width: 100%; + height: 2px; + background-color: rgba(255, 255, 255, 0.2); + /* background-color: red; */ + border-right: 4px solid #00F2F3; + border-left: 4px solid #00F2F3; + } + .wrap_footer_item { + display: flex; + align-items: center; + justify-content: center; + flex: 2; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + .name { + flex: 5; + color: #00F2F3; + } + } + + .list_content { + height: 204px; + overflow: hidden; + + .line_wrap { + height: 40px !important; + } + } + + .list { + .line { + display: flex; + height: 40px; + align-items: center; + font-size: 14px; + + .item { + flex: 2; + display: flex; + justify-content: center; + /* margin: 0 6px; */ + align-items: center; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + + } + + .name { + flex: 5; + color: #00F2F3; + } + + .warnning { + color: #FEAF01; + } + } + + .header { + background: rgba(134, 156, 201, 0.1); + font-weight: 500; + + .item { + border-right: 1px solid rgba(255, 255, 255, 0.2); + + &:nth-last-child(1) { + border: none; + } + } + } + + .separate { + width: 100%; + height: 2px; + background-color: rgba(255, 255, 255, 0.2); + /* background-color: red; */ + border-right: 4px solid #00F2F3; + border-left: 4px solid #00F2F3; + } + } } - .name { - flex: 2; + .content_wrap { + height: 176px; + + .list { + display: flex; + align-items: center; + + .item { + height: 116px; + flex: 1; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + + .num { + margin-top: 12px; + font-weight: bold; + font-size: 32px; + + } + + .acc { + background-image: -webkit-linear-gradient(top, + #ffffff 0%, + #c8ddff 66%, + #95eefc 72%, + #95eefc 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + } + + .active { + color: #00F2F3; + } + } + + .separate { + width: 1px; + height: 50px; + background-color: rgba(255, 255, 255, 0.21); + } + } + + .footer { + display: flex; + + .icon { + width: 40px; + height: 41px; + margin-right: 2px; + } + + .content { + flex: 1; + font-size: 16px; + height: 40px; + display: flex; + justify-content: space-between; + align-items: center; + padding: 0 20px; + background: linear-gradient(270deg, rgba(1, 217, 254, 0) 0%, rgba(1, 217, 254, 0.19) 100%); + border: 1px solid; + border-image: linear-gradient(270deg, rgba(1, 217, 254, 0), rgba(1, 217, 254, 0.6)) 1 1; + + .num { + font-size: 20px; + font-weight: bold; + + span { + font-size: 13px; + color: #869CC9; + } + } + } + } } - .warnning { - color: #FEAF01; - } } - .header { - background: rgba(134, 156, 201, 0.1); - font-weight: 500; + } + } + .left_box_top_right { + flex: 1; + + .center_box_one { + width: 100%; + padding: 0 120px; + box-sizing: border-box; + .static_wrap { + display: flex; + justify-content: space-between; + align-items: center; + margin: 30px 0 54px; .item { - border-right: 1px solid rgba(255, 255, 255, 0.2); + display: flex; - &:nth-last-child(1) { - border: none; + img { + width: 61px; + height: 63px; + margin-right: 15px; + } + + .content { + font-size: 15px; + .num { + font-weight: bold; + font-size: 30px; + margin-right: 5px; + background-image: -webkit-linear-gradient(top, + rgba(254, 113, 1, 1) 0%, + rgba(239, 202, 16, 1) 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + } + .num2 { + background-image: -webkit-linear-gradient(top, + #fff 0%, + #dd4c26 50%, + #e43724 100%); + } + .num5 { + background-image: -webkit-linear-gradient(top, + rgba(1, 217, 254, 1) 0%, + rgba(1, 254, 242, 1) 100%); + } + } + } + } + } + } + } + + .left_box_bottom { + width: 100%; + display: flex; + flex-direction: column; + + .bottom_content { + width: 100%; + height: 168px; + display: flex; + align-items: center; + justify-content: space-between; + background: rgba(255,255,255,0.03); + + .bottom_content_left { + width: 435px; + height: 100%; + padding: 20px; + box-sizing: border-box; + + .list_wrap { + width: 100%; + height: 64px; + margin-top: 20px; + + .list { + height: 100%; + display: flex; + justify-content: space-evenly; + + .item { + display: flex; + align-items: center; + position: relative; + + .place { + position: absolute; + top: 120px; + right: 70px; + z-index: 999; + font-size: 13px; + color: #869CC9; + width: 120px; + text-align: center; + } + + .icon { + width: 70px; + height: 70px; + margin-right: 10px; + } + + .content { + .num { + font-size: 28px; + font-weight: 500; + + span { + font-size: 14px; + font-weight: 400; + } + } + + .la { + font-size: 13px; + color: #869CC9; + } + } } } } - .separate { - width: 100%; - height: 2px; - background-color: rgba(255, 255, 255, 0.2); - /* background-color: red; */ - border-right: 4px solid #00F2F3; - border-left: 4px solid #00F2F3; - } } - } - } - .left_box_two { - margin-bottom: 20px; - - .police_wrap { - padding: 15px 20px 0; - height: 225px; - - .item { - margin-bottom: 5px; - - .head { - display: flex; - justify-content: space-between; - align-items: center; - font-size: 16px; - color: #FFFFFF; - margin-bottom: 8px; - } - } - } - } - - .left_box_three { - .dispose_wrap { - height: 210px; - width: 100%; - - .echart2 { - width: 100%; + .bottom_content_right { + flex: 1; height: 100%; + padding: 20px; + box-sizing: border-box; + + .list_wrap2 { + display: flex; + align-items: center; + height: 85px; + + .item1 { + width: 50%; + height: 0; + } + .item { + width: 50%; + height: 100%; + display: flex; + align-items: center; + position: relative; + + .list_wrap2_info { + flex: 1; + height: 100%; + display: flex; + flex-direction: column; + justify-content: space-between; + .title { + display: flex; + align-items: start; + color: #D2E0FF; + + .icon { + width: 16px; + margin-right: 8px; + } + + span { + font-weight: 400; + font-size: 14px; + color: #D2E0FF; + } + } + + .unit { + bottom: 16px; + left: 4px; + width: 130px; + margin-bottom: 6px; + margin-top: 2px; + + span { + font-weight: 500; + color: #FFFFFF; + + &:nth-child(1) { + font-size: 20px; + } + &:nth-child(2) { + font-size: 13px; + } + /*font-size: 12px;*/ + /*font-weight: 400;*/ + } + } + + .place { + bottom: 16px; + left: 4px; + width: 130px; + font-size: 13px; + color: #869CC9; + } + } + .watergage_wrap { + flex-shrink: 0; + width: 100px; + height: 85px; + text-align: center; + position: relative; + + .watergage { + width: 100px; + height: 85px; + } + + + } + .liquidlevel_wrap { + width: 100px; + height: 85px; + position: relative; + + .size { + width: 13px; + height: 84px; + position: absolute; + top: 3px; + right: 20px; + } + + .liquidle_te { + font-weight: 500; + font-size: 18px; + position: absolute; + top: 99px; + left: 0; + width: 206px; + display: flex; + flex-direction: column; + align-items: center; + + .placeT { + font-size: 12px; + color: #869CC9; + margin-top: 6px; + } + } + + .liquidlevel { + width: 220px; + height: 400px; + color: #fff; + transform: scale(0.24); + text-align: center; + left: -70px; + top: -154px; + } + } + } + } + } + } } } @@ -1012,251 +1653,12 @@ flex-direction: column; justify-content: space-between; - .center_box_one { - .static_wrap { - display: flex; - justify-content: space-between; - align-items: center; - margin: 30px 0 54px; - .item { - display: flex; - - img { - width: 61px; - height: 63px; - margin-right: 15px; - } - - .content { - font-size: 15px; - - .num { - font-size: 12px; - color: #D2E0FF; - - font-weight: bold; - font-size: 30px; - margin-right: 5px; - font-weight: 600; - background-image: -webkit-linear-gradient(top, - #01D9FE 0%, - #01D9FE 60%, - #fff 100%); - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - } - - .num2 { - background-image: -webkit-linear-gradient(top, - #fff 0%, - #dd4c26 50%, - #e43724 100%); - } - - .num3 { - background-image: -webkit-linear-gradient(top, - #fff 0%, - #e9bf43 50%, - #eb8131 100%); - } - - .num4 { - background-image: -webkit-linear-gradient(top, - #fff 0%, - #9e9e9e 50%, - #9e9e9e 100%); - } - - .num5 { - background-image: -webkit-linear-gradient(top, - #fff 0%, - #3a83f5 50%, - #3a83f5 100%); - } - } - } - } - } .center_box_two { - width: 100%; + width: 108%; display: flex; - - .content_wrap { - flex: 1; - margin-right: 20px; - - .title_wrap { - display: flex; - - .title { - flex: 1; - } - } - - &:nth-last-child(1) { - margin-right: 0; - } - - .header { - display: flex; - justify-content: space-between; - align-items: center; - font-weight: bold; - font-size: 16px; - text-shadow: 0px 2px 8px #01ABFE; - margin-bottom: 20px; - - .left { - display: flex; - align-items: center; - - .icon { - width: 14px; - height: 28px; - margin-right: 10px; - } - } - - .right { - display: flex; - align-items: center; - - .num { - margin: 0 40px; - } - - .icon { - width: 13px; - height: 16px; - } - } - } - - .list_wrap { - height: 206px; - background-image: url('@/assets/images/FireFighting/bg_wendu@2x.png'); - background-size: cover; - - .title { - height: 46px; - display: flex; - align-items: center; - color: #D2E0FF; - padding-left: 20px; - - .icon { - width: 16px; - margin-right: 8px; - } - } - - .list { - height: 160px; - display: flex; - justify-content: space-evenly; - - .item { - display: flex; - align-items: center; - - .icon { - width: 70px; - height: 70px; - margin-right: 10px; - } - - .content { - .num { - font-size: 28px; - font-weight: 500; - - span { - font-size: 14px; - font-weight: 400; - } - } - - .la { - font-size: 13px; - color: #869CC9; - } - } - } - } - - .watergage_wrap { - text-align: center; - position: relative; - left: 30px; - - .watergage { - width: 130px; - height: 112px; - } - - .unit { - font-weight: 500; - font-size: 18px; - position: relative; - bottom: 16px; - left: 4px; - - span { - font-size: 12px; - font-weight: 400; - } - } - - .place { - position: relative; - bottom: 16px; - left: 4px; - font-size: 13px; - color: #869CC9; - } - } - - .liquidlevel_wrap { - transform: scale(0.24); - color: #fff; - text-align: center; - position: relative; - left: 20px; - bottom: 10px; - - .unit { - font-weight: 500; - font-size: 80px; - position: relative; - bottom: 24px; - left: 4px; - - span { - font-size: 52px; - font-weight: 400; - } - } - - .place { - position: relative; - bottom: 10px; - left: 4px; - font-size: 44px; - color: #869CC9; - } - - .liquidlevel { - width: 320px; - height: 420px; - - } - } - - - } - } + margin: 0 -4%; } } @@ -1265,246 +1667,180 @@ width: 450px; .right_box_one { - .content_wrap { - height: 176px; + width: 100%; + + .right_content { + width: 100%; + height: 775px; + padding: 20px; + box-sizing: border-box; + background: rgba(255,255,255,0.03); .list { - display: flex; - align-items: center; + height: 240px; + overflow: hidden; + margin-top: 15px; + scrollbar-width: none; .item { - height: 116px; - flex: 1; display: flex; - flex-direction: column; - justify-content: center; - align-items: center; + font-size: 13px; + color: #D2E0FF; + height: 68px !important; - .num { - margin-top: 12px; - font-weight: bold; - font-size: 32px; - } + .icon { + width: 40px; + display: flex; + flex-direction: column; + align-items: center; + padding-top: 10px; - .active { - color: #00F2F3; - } - } - - .separate { - width: 1px; - height: 50px; - background-color: rgba(255, 255, 255, 0.21); - } - } - - .footer { - display: flex; - - .icon { - width: 40px; - height: 41px; - margin-right: 2px; - } - - .content { - flex: 1; - font-size: 16px; - height: 40px; - display: flex; - justify-content: space-between; - align-items: center; - padding: 0 20px; - background: linear-gradient(270deg, rgba(1, 217, 254, 0) 0%, rgba(1, 217, 254, 0.19) 100%); - border: 1px solid; - border-image: linear-gradient(270deg, rgba(1, 217, 254, 0), rgba(1, 217, 254, 0.6)) 1 1; - - .num { - font-size: 20px; - font-weight: bold; - - span { - font-size: 13px; - color: #869CC9; - } - } - } - } - } - } - - .right_box_two { - .su_title { - display: flex; - align-items: center; - font-weight: 500; - font-size: 16px; - margin: 20px; - - .icon { - width: 17px; - height: 17px; - margin-right: 7px; - } - } - - .static_wrap { - display: flex; - justify-content: space-evenly; - align-items: center; - height: 110px; - - .item { - display: flex; - align-items: center; - - img { - width: 80px; - height: 80px; - margin-right: 8px; - } - - .content { - font-size: 14px; - - .num { - font-size: 12px; - color: #D2E0FF; - margin-top: 8px; - - span { - font-weight: bold; - font-size: 24px; - margin-right: 4px; - font-weight: 600; - background-image: -webkit-linear-gradient(top, - #01D9FE 0%, - #01D9FE 60%, - #fff 100%); - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; + .circle { + width: 7px; + height: 7px; + border-radius: 50%; + background: #01D9FE; + box-shadow: 0px 0px 1px 4px #34788f; + /* opacity: 0.52; */ } - .today { - background-image: -webkit-linear-gradient(top, - #fff 0%, - #FFB120 50%, - #FFB120 100%); + .line { + margin-top: 3px; + width: 1px; + flex: 1; + background-color: #153947; } } - } - } - } - .list { - height: 330px; - overflow: auto; - margin-top: 15px; - scrollbar-width: none; - - .item { - display: flex; - font-size: 13px; - color: #D2E0FF; - - .icon { - width: 40px; - display: flex; - flex-direction: column; - align-items: center; - padding-top: 10px; - - .circle { - width: 7px; - height: 7px; - border-radius: 50%; - background: #01D9FE; - box-shadow: 0px 0px 1px 4px #34788f; - /* opacity: 0.52; */ - } - - .line { - margin-top: 3px; - width: 1px; + .content { flex: 1; - background-color: #153947; + + .header { + display: flex; + justify-content: space-between; + align-items: center; + + .time { + display: flex; + align-items: center; + + .status { + height: 18px; + line-height: 18px; + border-radius: 2px; + padding: 2px 4px; + border: 1px solid #869CC9; + font-size: 12px; + margin-left: 8px; + } + } + + .have_time { + font-size: 12px; + color: #D2E0FF; + + span { + color: #FEAF01; + } + } + } + + .wrap { + height: 34px; + background: linear-gradient(270deg, rgba(254, 85, 1, 0) 0%, rgba(254, 85, 1, 0.19) 100%); + border-radius: 2px 0px 0px 2px; + display: flex; + align-items: center; + border: 1px solid; + margin-bottom: 20px; + margin-top: 8px; + padding: 0 10px; + border-image: linear-gradient(270deg, rgba(254, 85, 1, 0), rgba(254, 85, 1, 0.6)) 1 1; + + .title { + flex: 4; + font-weight: bold; + font-size: 15px; + color: #FFFFFF; + display: flex; + align-items: center; + + span { + margin-left: 4px; + } + + .xf { + width: 14px; + height: 14px; + } + + .addr { + width: 12px; + height: 12px; + } + } + + .address { + flex: 6; + } + } + } + } + } + + .dispose_wrap { + height: 210px; + width: 100%; + position: relative; + + .tips { + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + position: absolute; + top: 0; + left: 0; + .tips_title { + display: flex; + align-items: center; + img { + width: 17px; + height: 17px; + margin-right: 7px; + } + span { + font-weight: 500; + font-size: 16px; + color: #FFFFFF; + } } } - .content { - flex: 1; + .echart2 { + width: 100%; + height: 100%; + } + } - .header { + .police_wrap { + padding: 15px 0; + height: 225px; + + .item { + margin-bottom: 5px; + + .head { display: flex; justify-content: space-between; align-items: center; - - .time { - display: flex; - align-items: center; - - .status { - height: 18px; - line-height: 18px; - border-radius: 2px; - padding: 2px 4px; - border: 1px solid #869CC9; - font-size: 12px; - margin-left: 8px; - } - } - - .have_time { - font-size: 12px; - color: #D2E0FF; - - span { - color: #FEAF01; - } - } - } - - .wrap { - height: 40px; - background: linear-gradient(270deg, rgba(254, 85, 1, 0) 0%, rgba(254, 85, 1, 0.19) 100%); - border-radius: 2px 0px 0px 2px; - display: flex; - align-items: center; - border: 1px solid; - margin-bottom: 20px; - margin-top: 8px; - padding: 0 10px; - border-image: linear-gradient(270deg, rgba(254, 85, 1, 0), rgba(254, 85, 1, 0.6)) 1 1; - - .title { - flex: 4; - font-weight: bold; - font-size: 15px; - color: #FFFFFF; - display: flex; - align-items: center; - - span { - margin-left: 4px; - } - - .xf { - width: 14px; - height: 14px; - } - - .addr { - width: 12px; - height: 12px; - } - } - - .address { - flex: 6; - } + font-size: 16px; + color: #FFFFFF; + margin-bottom: 8px; } } } + } } } @@ -1644,4 +1980,4 @@ object-fit: cover; z-index: -1; } -</style> \ No newline at end of file +</style> -- Gitblit v1.9.3