<template> <div id="ZHRQ"> <div :class="[ 'LeftBox', 'animate__animated', showPanel ? 'animate__fadeOutLeft' : 'animate__fadeInLeft', ]" > <div class="ComBox LeftBox1_1"> <div class="Box_header">管道风险评估</div> <div class="Box_Body"> <div class="TJListBox"> <div class="TJList TJList_RQ"> <img class="TJListImg" src="@/assets/images/Sponge_screen/RQ/RQ_RQ.png" alt="" /> <span class="TJListName">燃气管道</span> <span class="TJListValue">4549k㎡</span> </div> <div class="TJList TJList_GZ"> <img class="TJListImg" src="@/assets/images/Sponge_screen/RQ/RQ_GZ.png" alt="" /> <span class="TJListName">需改造</span> <span class="TJListValue">1922k㎡</span> </div> </div> <div class="RQ_EchartsBox"></div> </div> </div> <div class="ComBox LeftBox1_2"> <div class="Box_header">风险监测</div> <div class="Box_Body"> <div class="TJListBox"> <div class="TJList2"> <span class="TJList2Name">指标超标</span> <span class="TJList2Value">10</span> </div> <div class="TJList2"> <span class="TJList2Name">预警站点数</span> <span class="TJList2Value">1</span> </div> </div> <div class="TableChange"> <div class="TableChangeList" :class="AllData.TableChangeIndex == item.id ? 'TableCheck' : ''" v-for="item in AllData.ChangeData" @click="AllData.TableChangeIndex = item.id" > {{ item.name }} </div> </div> <!-- 弹性盒子 --> <div class="TableBox"> <div class="tableHeader"> <span class="tableHeaderList tableList1">指标</span> <span class="tableHeaderList tableList2">数值</span> <span class="tableHeaderList tableList3">状态</span> <span class="tableHeaderList tableList4">操作</span> </div> <div class="tableBody"> <div class="tableBodyList" v-for="item in AllData.FXJCData"> <span class="tableBodyList_span1" @click="FengXianClick(item)">{{ item.zb }}</span> <span class="tableBodyList_span2" @click="FengXianClick(item)" >{{ item.sz }} <el-icon v-if="item.szzt" color="lime" size="14"><Top /> </el-icon> <el-icon v-else color="#f54444" size="14"> <Bottom /> </el-icon> </span> <span class="tableBodyList_span3" :class="item.zt == 0 ? 'YJClass' : ''" >{{ item.zt == 0 ? "预警" : "正常" }}</span > <span class="tableBodyList_span4">派发</span> </div> </div> <div class="tableFoot">更新时间:2024-09-27 10:00</div> </div> </div> </div> <div class="ComBox LeftBox1_3"> <div class="Box_header">预警统计</div> <div class="Box_Body"> <div class="TableChange2"> <div class="TableChangeList2" :class="AllData.YJChangeIndex == item.id ? 'TableCheck2' : ''" v-for="item in AllData.YJChangeData" @click="initEcharts(item.id)" > {{ item.name }} </div> </div> <div id="YJEchartsBox"></div> </div> </div> </div> <div :class="[ 'RightBox', 'animate__animated', showPanel ? 'animate__fadeOutRight' : 'animate__fadeInRight', ]" > <div class="ComBox RightBox1_1"> <div class="Box_header">辅助决策</div> <div class="Box_Body"> <div class="JCListBox" v-for="item in AllData.JCData"> <div class="JCListBox_List"> <span class="JCListBox_List_label">风险区域:</span> <span class="JCListBox_List_value">{{ item.qy }}</span> </div> <div class="JCListBox_List"> <span class="JCListBox_List_label">风险特征:</span> <span class="JCListBox_List_value">{{ item.tz }}</span> </div> <div class="JCListBox_List"> <span class="JCListBox_List_label">历史事件:</span> <span class="JCListBox_List_value">{{ item.sj }}</span> </div> <div class="JCListBox_List"> <span class="JCListBox_List_label">问题研判:</span> <span class="JCListBox_List_value color_red">{{ item.yp }}</span> </div> <div class="JCListBox_List JCListBox_List_BTN"> <el-button style="background: #03b6a0; color: white; border: none" size="small" @click="GongDanPaiFa(item)" >工单派发</el-button > <el-button style="background: #03b6a0; color: white; border: none" size="small" >现场联线</el-button > </div> </div> </div> </div> <div class="ComBox RightBox1_2"> <div class="Box_header">巡查反馈</div> <div class="Box_Body"> <div class="FK_headerBox"> <div class="FK_headerBox_list"> <span class="FK_headerBox_list_colorBox1"></span> 未处理 </div> <div class="FK_headerBox_list"> <span class="FK_headerBox_list_colorBox2"></span> 已处理 </div> </div> <div class="FK_bodyBox"> <div class="FK_bodyBox_list" v-for="item in AllData.XCFKData"> <span class="FK_bodyBox_list_label">{{ item.name }}</span> <div class="FK_BigBox"> <div class="FK_CenBox1" :style="getWidth(item, 1)">{{ item.num1 }}</div> <div class="FK_CenBox2" :style="getWidth(item, 2)">{{ item.num2 }}</div> </div> </div> </div> </div> </div> </div> <div :class="[ 'TopBox', 'animate__animated', showPanel ? 'animate__fadeOutUp' : 'animate__fadeInDown', ]" > <div class="TopTableHeader"> <span class="TopTableListSpan TopTableListSpan1">时间</span> <span class="TopTableListSpan TopTableListSpan2">事件明细</span> <span class="TopTableListSpan TopTableListSpan3">地点</span> <span class="TopTableListSpan TopTableListSpan4">状态</span> <span class="TopTableListSpan TopTableListSpan5">责任单位</span> <span class="TopTableListSpan TopTableListSpan6">督办</span> </div> <!-- <div class="TopTableBody"> --> <Vue3SeamlessScroll :list="AllData.TopTableData" :singleHeight="34" :hover="true" class="TopTableBody" > <div class="TopTableBody_list" v-for="item in AllData.TopTableData"> <span class="TopTableListSpan TopTableListSpan1">{{ item.sj }}</span> <span class="TopTableListSpan TopTableListSpan2">{{ item.mx }}</span> <span class="TopTableListSpan TopTableListSpan3">{{ item.dd }}</span> <span class="TopTableListSpan TopTableListSpan4">{{ item.zt }}</span> <span class="TopTableListSpan TopTableListSpan5">{{ item.dw }}</span> <span class="TopTableListSpan TopTableListSpan6"> <img class="TopTableListSpanImg2" src="@/assets/images/Sponge_screen/RQ/RQ_XX.png" alt="" /> <img class="TopTableListSpanImg" src="@/assets/images/Sponge_screen/RQ/RQ_SP.png" alt="" /> </span> </div> </Vue3SeamlessScroll> <!-- </div> --> </div> </div> </template> <script setup name="ZHRQ"> import { ref, reactive, toRefs, onMounted, onBeforeUnmount } from "vue"; import * as echarts from "echarts"; import bus from "@/bus"; import { Vue3SeamlessScroll } from "vue3-seamless-scroll"; import sheBeiLost from "@/assets/sheBeiLost.json"; import xiaXian from "@/assets/xiaXian.json"; import yiBian from "@/assets/yiBian.json"; import zaWuDuiFang from "@/assets/zaWuDuiFang.json"; import yanAnRQoverindex from "@/assets/yanAnRQoverindex.json"; import yanAnWarring from "@/assets/yanAnWarring.json"; const AllData = reactive({ ChangeData: [ { name: "枣园", id: 1, }, { name: "杨家湾", id: 2, }, { name: "丰富川", id: 3, }, ], TableChangeIndex: 1, // 风险监测 FXJCData: [ { zb: "甲烷浓度", sz: 10, szzt: true, zt: 0, //0预警 1 正常 }, { zb: "压力", sz: 10, szzt: false, zt: 1, //0预警 1 正常 }, { zb: "温度", sz: 10, szzt: true, zt: 1, //0预警 1 正常 }, ], YJChangeData: [ { name: "综合", id: 1, }, { name: "压力", id: 2, }, { name: "温度", id: 3, }, ], YJChangeIndex: 1, //辅助决策 JCData: [ { qy: "雅安街与南湖路交叉口", tz: "压力监测异常波动", sj: 5, yp: "设施故障", }, { qy: "雅安街与南湖路交叉口", tz: "燃气管道压力过大", sj: 5, yp: "燃气爆管风险", }, { qy: "雅安街与南湖路交叉口", tz: "高峰期流量持续降低", sj: 4, yp: "燃气泄漏风险", }, ], // 巡查反馈 XCFKData: [ { name: "堆放杂物", num1: 20, num2: 80, }, { name: "设备丢失", num1: 12, num2: 88, }, { name: "下陷", num1: 32, num2: 68, }, { name: "异变", num1: 30, num2: 70, }, { name: "其他", num1: 20, num2: 80, }, ], // 顶部表格数据 TopTableData: [ { sj: "2024-09-26 10:00:29", mx: "燃气常规检查发现泄漏", dd: "车城大道与车辆西路路口", zt: 0, //0未处理 1已处理 dw: "杨家湾输配站", }, { sj: "2024-09-27 16:10:248", mx: "燃气常规检查发现泄漏", dd: "车城大道与车辆西路路口", zt: 1, //0未处理 1已处理 dw: "杨家湾输配站", }, { sj: "2024-09-26 10:00:29", mx: "燃气常规检查发现泄漏", dd: "车城大道与车辆西路路口", zt: 0, //0未处理 1已处理 dw: "杨家湾输配站", }, { sj: "2024-09-27 16:10:248", mx: "燃气常规检查发现泄漏", dd: "车城大道与车辆西路路口", zt: 1, //0未处理 1已处理 dw: "杨家湾输配站", }, ], timer: null, }); // 预警统计echarts实例 const myChart = shallowRef(null); //面板展开收起 const showPanel = ref(true); // 面板内容展开收起控制 const props = defineProps({ showPanel: { type: Boolean, }, }); // 初始化预警统计的Echarts const initEcharts = (id) => { AllData.YJChangeIndex = id; let Data1 = []; let Data2 = []; if (AllData.YJChangeIndex == 1) { Data1 = [6, 2, 1, 5, 7, 6, 3]; Data2 = [16, 7, 8, 12, 16, 13, 12]; } else if (AllData.YJChangeIndex == 2) { Data1 = [2, 3, 8, 3, 2, 1, 4]; Data2 = [7, 16, 13, 16, 12, 8, 12]; } else { Data1 = [6, 4, 3, 5, 8, 3, 8]; Data2 = [8, 12, 16, 13, 16, 7, 12]; } if (!!AllData.timer) { clearTimeout(AllData.timer); } if (!!myChart.value) { myChart.value.dispose(); } myChart.value = echarts.init(document.getElementById("YJEchartsBox")); myChart.value.setOption({ color: ["#18A7F2", "#1AF7AA"], tooltip: { trigger: "axis", }, grid: { top: "30%", left: "3%", right: "4%", bottom: "3%", containLabel: true, }, legend: { data: ["预警次数", "持续时长"], textStyle: { color: "#fffd", // 图例文字颜色 }, x: "40", y: "10", }, xAxis: [ { type: "category", data: ["今日", "09/27", "09/26", "09/25", "09/24", "09/23", "09/22"], axisPointer: { type: "shadow", }, textStyle: { color: "#EBFEFF", }, axisLine: { lineStyle: { color: "#EBFEFF", }, }, // boundaryGap: false, }, ], yAxis: [ { type: "value", name: "预警次数", min: 0, max: 12, interval: 2, axisLabel: { formatter: "{value}", }, axisLine: { lineStyle: { color: "#AAC1CF", }, }, splitLine: { lineStyle: { // 使用深浅的间隔色 color: ["#184E5A"], }, }, }, { type: "value", name: "持续时长", min: 0, max: 30, interval: 5, axisLabel: { formatter: "{value}", }, axisLine: { lineStyle: { color: "#AAC1CF", }, }, splitLine: { lineStyle: { // 使用深浅的间隔色 color: ["#184E5A"], }, }, }, ], series: [ { name: "预警次数", type: "bar", barWidth: "10px", showBackground: true, tooltip: { valueFormatter: function (value) { return value + " 次"; }, }, itemStyle: { // borderRadius: 10, // 统一设置四个角的圆角大小 borderRadius: [10, 10, 0, 0], //(顺时针左上,右上,右下,左下) }, data: Data1, }, { name: "持续时长", type: "line", yAxisIndex: 1, tooltip: { valueFormatter: function (value) { return value + "min"; }, }, areaStyle: { opacity: 0.8, color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: "#1AF7AA", }, { offset: 1, color: "#1AF7AA00", }, ]), }, data: Data2, }, ], }); animateChart(); }; const animateChart = () => { let length = 7; let i = 0; AllData.timer = setInterval(() => { i++; if (i == length) i = 0; myChart.value.dispatchAction({ type: "showTip", seriesIndex: 0, dataIndex: i, }); }, 2000); }; // 动态计算盒子的宽度 const getWidth = (item, num) => { let widthNum = 0; if (num == 1) { widthNum = (item.num1 / (item.num1 + item.num2)) * 100; } else { widthNum = (item.num2 / (item.num1 + item.num2)) * 100; } return `width:${widthNum}%`; }; // 工单派发 const GongDanPaiFa = (item) => { console.log(item); let data = { title: item.qy, comIDs: ["gdpf"], }; bus.emit("publicDialog", data); }; // 风险 const FengXianClick = (item) => { console.log(item); let data = { title: item.zb + " 风险监测", comIDs: ["RQ_FengXianJianCe"], }; bus.emit("publicDialog", data); }; watch( () => props.showPanel, () => { showPanel.value = props.showPanel; }, { immediate: true } ); onMounted(() => { let initeRQTimer = setInterval(() => { if (!newfiberMapbox) return; if (!newfiberMapbox.map.getLayer("rq_pipeline_info")) return; if (!newfiberMapbox.map.getLayer("sx_ya_smx_rq_point")) return; //燃气超标 //let key = 'warning_monitor'; // bus.emit('getGeojsonByType', { // type: key, // callback: geojson => { // if (!!!geojson.features.length) bus.emit('setGeoJSON', { json: yanAnRQoverindex, key: 'warning_monitor' }); // bus.emit('setLayerVisible', { type: 'point', layername: key, isCheck: true }); // }, // }); //燃气告警 // let key = 'warning_monitor'; // bus.emit('getGeojsonByType', { // type: key, // callback: geojson => { // if (!!!geojson.features.length) bus.emit('setGeoJSON', { json: yanAnWarring, key: 'warning_monitor' }); // bus.emit('setLayerVisible', { type: 'point', layername: key, isCheck: true }); // }, // }); //告警点事件 // let warningPoint = newfiberMapbox.getLayers().filter(feature => feature.newfiberId == 'warning_monitor')[0]; // if (warningPoint) { // warningPoint.on('click', e => { // let popupData = e.feature.properties; // console.log('popupData---', '告警---------', popupData); // }); // } bus.emit("setLayerVisible", { layername: "rq_all", isCheck: true }); //所有管网rq_all、市政rq_SZLH、庭院rq_TYLH、立管rq_LGLH、其他rq_other // //杂物堆放 // bus.emit('setGeoJSON', { json: zaWuDuiFang, key: 'DFZW' }); // bus.emit('setLayerVisible', { layername: 'DFZW', isCheck: true }); // //设备丢失 // bus.emit('setGeoJSON', { json: sheBeiLost, key: 'SBDS' }); // bus.emit('setLayerVisible', { layername: 'SBDS', isCheck: true }); // //下陷 // bus.emit('setGeoJSON', { json: xiaXian, key: 'xiaXian' }); // bus.emit('setLayerVisible', { layername: 'xiaXian', isCheck: true }); // //异变 // bus.emit('setGeoJSON', { json: yiBian, key: 'yiBian' }); // bus.emit('setLayerVisible', { layername: 'yiBian', isCheck: true }); clearInterval(initeRQTimer); }, 100); initEcharts(1); }); onBeforeUnmount(() => { bus.emit("setLayerVisible", { layername: "rq_all", isCheck: false }); bus.emit("setLayerVisible", { layername: "rq_SZLH", isCheck: false }); bus.emit("setLayerVisible", { layername: "rq_TYLH", isCheck: false }); bus.emit("setLayerVisible", { layername: "rq_LGLH", isCheck: false }); bus.emit("setLayerVisible", { layername: "rq_other", isCheck: false }); bus.emit("closeCesiumPopup"); if (!!newfiberMapbox.getLayerByName("rqLine")) { newfiberMapbox.removeLayer(newfiberMapbox.getLayerByName("rqLine")); } }); </script> <style lang="scss" scoped> @import "@/assets/styles/transition_oneMap.scss"; #ZHRQ { .LeftBox { width: 450px; height: calc(100% - 98px); position: absolute; left: 10px; top: 70px; background: linear-gradient( 0deg, rgba(0, 43, 67, 0.8) 0%, rgba(0, 69, 108, 0.8) 100% ); border-radius: 6px; border: 1px solid #47eef3; box-sizing: border-box; padding: 10px; box-shadow: inset 0 0 5px 5px #47eef38a; .LeftBox1_1 { height: 365px; .TJListBox { height: 42px; margin-top: 10px; width: 100%; display: flex; flex-direction: row; flex-wrap: nowrap; justify-content: space-between; align-items: center; .TJList { height: 42px; width: calc(50% - 9px); display: flex; .TJListImg { width: 22px; height: 22px; margin: 9px; } .TJListName { font-family: Source Han Sans CN; font-weight: 400; font-size: 14px; color: #f4f9ff; width: 65px; height: 40px; line-height: 40px; } .TJListValue { font-family: Source Han Sans CN; font-weight: bold; font-size: 20px; width: calc(100% - 110px); height: 40px; line-height: 40px; text-align: right; } } .TJList_RQ { background: rgba(7, 54, 102, 0.3); border-radius: 4px; border: 1px solid #15d2fd; box-shadow: inset 0 0 10px #15d2fdb0; /* 水平偏移|垂直偏移|模糊半径|颜色 */ .TJListValue { color: #12f9ff; } } .TJList_GZ { background: rgba(164, 74, 8, 0.3); border-radius: 4px; border: 1px solid #ffd97f; box-shadow: inset 0 0 10px #ffd97fb0; /* 水平偏移|垂直偏移|模糊半径|颜色 */ .TJListValue { color: #ffd97f; } } } .RQ_EchartsBox { width: 100%; height: calc(100% - 72px); margin-top: 10px; background: url("@/assets/images/Sponge_screen/RQ/Ech.png") no-repeat center; background-size: cover; } } .LeftBox1_2 { height: calc(100% - 365px - 275px - 10px); margin-bottom: 10px; // 风险监测 .TJListBox { height: 42px; margin-top: 10px; width: 100%; display: flex; flex-direction: row; flex-wrap: nowrap; justify-content: space-between; align-items: center; .TJList2 { height: 42px; width: calc(50% - 9px); display: flex; background: url("@/assets/images/Sponge_screen/RQ/RQ_FX.png") no-repeat center; background-size: 100% 100%; .TJList2Name { width: 50%; font-family: Source Han Sans CN; font-weight: 400; font-size: 14px; color: #f4f9ff; height: 40px; line-height: 40px; text-align: left; box-sizing: border-box; padding-left: 20px; } .TJList2Value { width: 50%; font-family: Source Han Sans CN; font-weight: bold; font-size: 20px; color: #12f9ff; height: 40px; line-height: 40px; text-align: center; } } } .TableChange { height: 42px; width: 100%; box-sizing: border-box; padding: 10px 0px; display: flex; flex-direction: row; flex-wrap: nowrap; justify-content: flex-end; align-items: center; .TableChangeList { width: 60px; height: 22px; background: #00344f; border-radius: 2px; font-family: Source Han Sans CN; font-weight: 500; font-size: 14px; color: #c1d3d4; text-align: center; line-height: 20px; cursor: pointer; } .TableCheck { background: #00344f; border-radius: 2px; border: 1px solid #1cf5fc; font-family: Source Han Sans CN; font-weight: bold; font-size: 12px; color: #ebfeff; background: #1cf4fc22; } } .TableBox { width: 100%; height: calc(100% - 94px); .tableHeader { width: 100%; height: 34px; background: linear-gradient(0deg, #00fbffa3 0%, #00fbff00 100%); border-radius: 2px; border: 1px solid #74dde1; display: flex; .tableHeaderList { font-family: Source Han Sans CN; font-weight: 400; font-size: 14px; color: #ffffff; height: 34px; line-height: 34px; text-align: center; } .tableList1 { width: 20%; } .tableList2 { width: 30%; } .tableList3 { width: 30%; } .tableList4 { width: 20%; } } .tableBody { width: 100%; height: calc(100% - 68px); overflow: auto; .tableBodyList { height: 34px; line-height: 34px; width: 100%; display: flex; /* 选择偶数行 */ &:nth-child(even) { background: linear-gradient(0deg, #008599 0%, #08596d 100%); } .tableBodyList_span1 { font-family: Source Han Sans CN; font-weight: 400; font-size: 14px; color: #ffffff; height: 34px; line-height: 34px; text-align: center; width: 20%; cursor: pointer; } .tableBodyList_span2 { font-family: Source Han Sans CN; font-weight: 400; font-size: 14px; color: #ffffff; height: 34px; line-height: 34px; text-align: center; width: 30%; cursor: pointer; } .tableBodyList_span3 { font-family: Source Han Sans CN; font-weight: 400; font-size: 14px; color: #ffffff; height: 34px; line-height: 34px; text-align: center; width: 30%; } .YJClass { color: #ffe243; } .tableBodyList_span4 { font-family: Source Han Sans CN; font-weight: 400; font-size: 14px; color: #ffffff; height: 34px; line-height: 34px; text-align: center; width: 20%; cursor: pointer; } } } .tableFoot { width: 100%; height: 34px; background: linear-gradient(0deg, #008599b7 0%, #08596d91 100%); font-family: Source Han Sans CN; font-weight: 400; font-size: 14px; color: #ebfeff; line-height: 34px; text-align: center; } } } .LeftBox1_3 { height: 275px; .TableChange2 { height: 42px; width: 100%; box-sizing: border-box; padding: 10px 0px; display: flex; flex-direction: row; flex-wrap: nowrap; justify-content: flex-end; align-items: center; position: absolute; top: 0px; right: 0px; z-index: 999; .TableChangeList2 { width: 60px; height: 22px; background: #00344f; border-radius: 2px; font-family: Source Han Sans CN; font-weight: 500; font-size: 14px; color: #c1d3d4; text-align: center; line-height: 20px; cursor: pointer; } .TableCheck2 { background: #00344f; border-radius: 2px; border: 1px solid #1cf5fc; font-family: Source Han Sans CN; font-weight: bold; font-size: 12px; color: #ebfeff; background: #1cf4fc22; } } #YJEchartsBox { width: 100%; height: 100%; } } } .RightBox { width: 450px; height: calc(100% - 98px); position: absolute; right: 10px; top: 70px; background: linear-gradient( 0deg, rgba(0, 43, 67, 0.8) 0%, rgba(0, 69, 108, 0.8) 100% ); border-radius: 6px; border: 1px solid #47eef3; box-sizing: border-box; padding: 10px; box-shadow: inset 0 0 5px 5px #47eef38a; .RightBox1_1 { height: calc(100% - 298px); margin-bottom: 10px; box-sizing: border-box; // padding: 0 10px; .JCListBox { margin-top: 10px; width: 100%; height: 196px; background: linear-gradient(0deg, #008599 0%, #08596d 100%); border-radius: 4px; overflow: hidden; .JCListBox_List { width: 100%; height: 28px; margin-top: 10px; display: flex; flex-direction: row; flex-wrap: nowrap; justify-content: space-evenly; align-items: center; .JCListBox_List_label { display: inline-block; font-family: Source Han Sans CN; font-weight: 400; font-size: 14px; color: #c1d3d4; height: 28px; line-height: 28px; text-align: right; width: 70px; } .JCListBox_List_value { display: inline-block; border: 1px solid #1cf5fc; width: 290px; height: 28px; line-height: 28px; font-family: Source Han Sans CN; font-weight: 400; font-size: 14px; color: #ffffff; text-align: center; } } .JCListBox_List_BTN { justify-content: center; align-items: center; } } } .RightBox1_2 { height: 288px; .FK_headerBox { width: 100%; height: 45px; display: flex; flex-direction: row; flex-wrap: nowrap; justify-content: center; align-items: center; .FK_headerBox_list { font-family: Source Han Sans CN; font-weight: bold; font-size: 14px; color: #ebfeff; width: 100px; text-align: center; .FK_headerBox_list_colorBox1 { display: inline-block; width: 10px; height: 10px; background: #ee5777; } .FK_headerBox_list_colorBox2 { display: inline-block; width: 10px; height: 10px; background: #00ffbe; } } } .FK_bodyBox { width: 100%; height: 200px; overflow: auto; box-sizing: border-box; padding: 0 30px; .FK_bodyBox_list { width: 100%; height: 20px; margin-bottom: 20px; display: flex; .FK_bodyBox_list_label { display: block; font-family: Source Han Sans CN; font-weight: 500; font-size: 14px; color: #ffffff; width: 80px; } .FK_BigBox { display: block; width: calc(100% - 80px); height: 20px; .FK_CenBox1 { display: inline-block; height: 20px; background: linear-gradient(-90deg, #f35f7f 0%, #c21439 100%); font-family: Source Han Sans CN; font-weight: bold; font-size: 14px; color: #ffffff; text-align: right; line-height: 20px; box-sizing: border-box; padding: 0 10px; } .FK_CenBox2 { display: inline-block; height: 20px; background: linear-gradient(90deg, #20d9aa 0%, #0882a0 100%); font-weight: bold; font-size: 14px; color: #ffffff; text-align: right; line-height: 20px; box-sizing: border-box; padding: 0 10px; } } } } } } .TopBox { width: calc(100% - 1040px); height: 122px; position: absolute; left: 520px; top: 110px; background: linear-gradient( 0deg, rgba(0, 43, 67, 0.8) 0%, rgba(0, 69, 108, 0.8) 100% ); border-radius: 6px; border: 1px solid #47eef3; box-sizing: border-box; box-shadow: inset 0 0 5px 5px #47eef38a; padding: 10px; .TopTableHeader { width: 100%; height: 34px; background: linear-gradient(0deg, #00fbffa3 0%, #00fbff00 100%); border: 1px solid #74dde1; display: flex; } .TopTableBody { width: 100%; height: calc(100% - 34px); overflow: auto; // display: flex; // flex-direction: column; // flex-wrap: nowrap; .TopTableBody_list { display: inline-block; width: 100%; height: 34px; /* 选择偶数行 */ &:nth-child(even) { background: linear-gradient(0deg, #008599 0%, #08596d 100%); } } } .TopTableListSpan { font-family: Source Han Sans CN; font-weight: 400; font-size: 14px; color: #ffffff; height: 34px; line-height: 34px; display: inline-block; box-sizing: border-box; overflow: hidden; text-overflow: ellipsis; /* 超出宽度后显示省略号 */ white-space: nowrap; /* 限制不允许换行 */ } .TopTableListSpan1 { width: 20%; text-align: left; padding-left: 10px; } .TopTableListSpan2 { width: 25%; text-align: center; } .TopTableListSpan3 { width: 20%; text-align: center; } .TopTableListSpan4 { width: 10%; text-align: center; } .TopTableListSpan5 { width: 15%; text-align: center; } .TopTableListSpan6 { width: 10%; text-align: right; padding-right: 10px; .TopTableListSpanImg { width: 15px; height: 19px; margin: 7px; } .TopTableListSpanImg2 { width: 19px; height: 19px; margin: 7px; } } } // 左右两侧展示板块公共样式 .ComBox { width: 100%; box-sizing: border-box; .Box_header { width: 100%; height: 43px; background: url("@/assets/images/Sponge_screen/Box_HeaderBackground.png") no-repeat center; background-size: cover; font-family: PangMenZhengDao; font-weight: 400; font-size: 23px; color: #ebfeff; line-height: 43px; box-sizing: border-box; padding-left: 35px; } .Box_Body { width: 100%; height: calc(100% - 43px); box-sizing: border-box; position: relative; overflow: auto; } } .color_red { color: #ff3f3f !important; } } </style>