From 84ff051d5c6bbf10e71f6f8d1d57740c26619d9e Mon Sep 17 00:00:00 2001
From: he wei <858544502@qq.com>
Date: 星期四, 08 五月 2025 16:51:16 +0800
Subject: [PATCH] U 苏州地铁首页

---
 src/views/home/home-szdt.vue |  610 +++++++++++++++++++++++++++----------------------------
 1 files changed, 300 insertions(+), 310 deletions(-)

diff --git a/src/views/home/home-szdt.vue b/src/views/home/home-szdt.vue
index f97962a..923e6a3 100644
--- a/src/views/home/home-szdt.vue
+++ b/src/views/home/home-szdt.vue
@@ -1,162 +1,94 @@
 <template>
   <div class="p-main">
-    <div class="row">
-      <card>
-        <big-screen-card title="鍛婅缁熻">
-          <template #tools>
-            <el-radio-group size="mini" v-model="alarmType" @input="alarmTypeChangede">
-              <el-radio-button :label="0">鍛婅绫诲瀷</el-radio-button>
-              <el-radio-button :label="1">鍛婅绛夌骇</el-radio-button>
-            </el-radio-group>
-          </template>
-          <div class="chart-wrap">
-            <div class="inner">
-              <bar-chart-alarm v-if="alarmType == 1" ref="chart_alarm"></bar-chart-alarm>
-              <pie-chart ref="alarmPieChart" :values="alarms" v-else></pie-chart>
-            </div>
-          </div>
-        </big-screen-card>
-      </card>
-    </div>
-    <div class="row">
-      <card>
-        <big-screen-card title="璁惧宸ヤ綔鐘舵��">
-          <div class="dev-wrap">
-            <circle-box class="item" :type="0" :value="workState[0]" @click.native="goDevWorkState(4)"></circle-box>
-            <circle-box ref="devWorkState1" class="item" :type="1" :value="workState[1]"
-              @click.native="goDevWorkState(2)"></circle-box>
-            <circle-box ref="devWorkState2" class="item" :type="2" :value="workState[2]"
-              @click.native="goDevWorkState(0)"></circle-box>
-            <circle-box ref="devWorkState3" class="item" :type="3" :value="workState[3]"
-              @click.native="goDevAlarm"></circle-box>
-          </div>
-        </big-screen-card>
-      </card>
-    </div>
-    <div class="row">
-      <card>
-        <big-screen-card title="鏁寸粍瀹归噺">
-          <div class="mon-box-container">
-            <div class="mon-info-box">
-              <div class="mon-info-title">澶т簬95%姣斾緥:</div>
-              <div class="mon-info-value">{{ cap.level0 }}</div>
-            </div>
-            <div class="mon-info-box box2">
-              <div class="mon-info-title">95%~85%姣斾緥:</div>
-              <div class="mon-info-value">{{ cap.level1 }}</div>
-            </div>
-            <div class="mon-info-box box3">
-              <div class="mon-info-title">85%~60%姣斾緥:</div>
-              <div class="mon-info-value">{{ cap.level2 }}</div>
-            </div>
-          </div>
-          <div class="mon-box-container mgt16">
-            <div class="mon-info-box box2">
-              <div class="mon-info-title">60%~50%姣斾緥:</div>
-              <div class="mon-info-value">{{ cap.level3 }}</div>
-            </div>
-            <div class="mon-info-box box3">
-              <div class="mon-info-title">灏忎簬50%:</div>
-              <div class="mon-info-value">{{ cap.level4 }}</div>
-            </div>
-          </div>
-        </big-screen-card>
-      </card>
+    <div class="p-side p-left">
+      <div class="row">
+          <home-card title="缁熻鐢垫睜鍛婅">
+            <template #tools>
+              <el-select v-model="lineSelect0" size="mini" @change="testLevelChange(0)">
+                <el-option v-for="(item, idx) in lineList" :key="'select_' + idx" :label="item == 0 ? '鍏ㄩ儴' : item + '鍙风嚎'" :value="item"></el-option>
+              </el-select>
+            </template>
+            <!-- <div class="chart-wrap">
+              <div class="inner">
+                <bar-chart-alarm v-if="alarmType == 1" ref="chart_alarm"></bar-chart-alarm>
+                <pie-chart ref="alarmPieChart" :values="alarms" v-else></pie-chart>
+              </div>
+            </div> -->
+            <bar3d ref="bar3d0"></bar3d>
+          </home-card>
+      </div>
+      <div class="row">
+          <home-card title="鏁呴殰绫诲瀷缁熻">
+            <template #tools>
+              <el-select v-model="lineSelect1" size="mini" @change="testLevelChange(1)">
+                <el-option v-for="(item, idx) in lineList" :key="'select_' + idx" :label="item == 0 ? '鍏ㄩ儴' : item + '鍙风嚎'" :value="item"></el-option>
+              </el-select>
+            </template>
+            <pie-chart ref="pie"></pie-chart>
+          </home-card>
+      </div>
     </div>
     <div class="wraper">
       <div class="row row1">
-        <card :miniCor="true">
           <div class="info">
             <div class="item" @click="goStations">
-              <div class="name">绔欑偣</div>
+              <div class="name">鏈烘埧涓暟</div>
               <div class="num">
-                <led-num color="#f00" :num="stationNum"></led-num>
+                {{ stationNum }}
               </div>
             </div>
             <div class="item">
-              <div class="name">璁惧</div>
+              <div class="name">璁惧涓暟</div>
               <div class="num">
-                <led-num color="#f00" :num="devCount"></led-num>
+                {{ devCount }}
               </div>
             </div>
             <div class="item" @click="goBatt">
-              <div class="name">鐢垫睜鑺傛暟</div>
-              <div class="num bits5">
-                <led-num color="#f00" :bits='5' :num="battGroupMonCount"></led-num>
-              </div>
-            </div>
-            <div class="item" @click="goBatt">
-              <div class="name">鐢垫睜缁�</div>
+              <div class="name">鐢垫睜缁勪釜鏁�</div>
               <div class="num">
-                <led-num color="#f00" :num="battGroupCount"></led-num>
+                {{ battGroupCount }}
               </div>
             </div>
           </div>
-        </card>
       </div>
       <div class="row row2">
-        <card :inside="false">
           <div class="flex-map-contain">
             <div class="inner">
-              <map-chart ref="map" subway="suzhou">
-                <map-mark-list slot="tools"></map-mark-list>
-              </map-chart>
+              <svg-subway :lines="lineList.filter(v=> v != 0)" :status="statusList" @legend-change="legendChange"></svg-subway>
             </div>
           </div>
-        </card>
       </div>
     </div>
-    <div class="row alarm">
-      <card>
-        <big-screen-card title="瀹炴椂鍛婅淇℃伅">
-          <div class="scroller-wrap">
-            <div class="inner">
-              <el-table ref="elTbl" stripe size="small" :data="tbl.data" height="100%" :row-class-name="
-                    (row) =>'cursor-pointer'
-                  " @row-dblclick="goRealTime" class="tableCent">
-                <el-table-column v-for="header in tbl.headers" :key="header.prop" :prop="header.prop"
-                  :label="header.label" :width="header.width" :min-width="header.minWidth" :sortable="header.sortable"
-                  align="center"></el-table-column>
-                <el-table-column label="鎿嶄綔" width="110" align="center">
-                  <template slot-scope="scope">
-                    <el-button type="primary" size="mini" @click="goRealTime(scope.row)">瀹炴椂</el-button>
-                  </template>
-                </el-table-column>
-              </el-table>
-              <!-- <div class="empty-msg" v-else>鏈�杩戜竴鍛ㄦ棤璁板綍</div> -->
+    <div class="p-side p-right">
+      <div class="row alarm">
+          <home-card title="鐢垫睜鐘舵��">
+            <template #tools>
+              <el-select v-model="lineSelect2" size="mini" @change="testLevelChange(2)">
+                <el-option v-for="(item, idx) in lineList" :key="'select_' + idx" :label="item == 0 ? '鍏ㄩ儴' : item + '鍙风嚎'" :value="item"></el-option>
+              </el-select>
+            </template>
+            <bar3d ref="bar3d1"></bar3d>
+          </home-card>
+      </div>
+      <div class="row test-info">
+          <home-card title="瀹炴椂鐢垫睜鍛婅婊氬姩">
+            <template #tools>
+              <el-select v-model="lineSelect3" size="mini" @change="testLevelChange(3)">
+                <el-option v-for="(item, idx) in lineList" :key="'select_' + idx" :label="item == 0 ? '鍏ㄩ儴' : item + '鍙风嚎'" :value="item"></el-option>
+              </el-select>
+            </template>
+            <div class="scroller-wraper">
+              <marquee-top :sendVal="newItems" v-if="showMarquee"></marquee-top>
+              <div class="no-warning-msg" v-else>鏈�杩�24灏忔椂鍐呮棤鍛婅</div>
             </div>
-          </div>
-        </big-screen-card>
-      </card>
-    </div>
-    <div class="row test-info">
-      <card>
-        <big-screen-card title="绾胯矾鍛婅">
-          <template #tools>
-            <!-- :disabled="!chartData.test.length" -->
-            <!-- <el-radio-group
-                size="mini"
-                @input="testLevelChange"
-                v-model="testLevel"
-              >
-                <el-radio-button :label="0">鎬荤嚎璺�</el-radio-button>
-                <el-radio-button :label="1">1鍙风嚎</el-radio-button>
-                <el-radio-button :label="2">2鍙风嚎</el-radio-button>
-              </el-radio-group> -->
-            <el-select v-model="testLevel" size="small" @change="testLevelChange">
-              <el-option v-for="(item, idx) in lineList" :key="'select_' + idx" :label="item" :value="item"></el-option>
-            </el-select>
-          </template>
-          <bar3d ref="bar3d"></bar3d>
-        </big-screen-card>
-      </card>
+          </home-card>
+      </div>
     </div>
   </div>
 </template>
 
 <script>
-	import card from "./components/card-corner";
-	import BigScreenCard from "@/components/bigScreenPage/big_screen_card.vue";
+	import homeCard from "./components/home_card.vue";
 	import BatteryPieChart from "@/components/myCharts/BatteryPieChart.vue";
 	import MapChart from "@/components/myCharts/MapChart.vue";
 	import MapMarkList from "@/components/mapMarkList.vue";
@@ -165,28 +97,42 @@
 	import circleBox from "./components/circle.vue";
 	import BarChart from "@/components/myCharts/BarChart.vue";
 	import LedNum from "@/components/ledNum";
-	import pieChart from "./components/pieCharts";
+	// import pieChart from "./components/pieCharts";
+  import pieChart from "./components/pie-chart1";
 	import BarChartAlarm from "./components/batt-chart-alarm";
 	import PowerPieChart from "@/components/myCharts/PieRoseChart.vue";
 	import { const_alarm_level } from "@/assets/js/const";
 	import { getLabelByValue } from "@/assets/js/tools";
 	import getNowStamp from "@/assets/js/tools/getNowStamp";
+  import marqueeTop from './components/marqueeTop.vue';
+
+  // import svgSubway from './components/test.vue';
+  import svgSubway from './components/SubwayView.vue';
 
 	import createWs from "@/assets/js/websocket/plus";
 	import { sethoubeiTime, formatSeconds } from "@/assets/js/tools";
-	const WSMixin = createWs("screen_sz", 'battAlarmFoot');
+	const WSMixin = createWs("screen_sz2", 'battAlarmFoot');
 
 	export default {
 		name: "",
 		mixins: [WSMixin],
 		data() {
 			return {
+        nums: {},
+        selectFlag: false,
+        newItems: [],
+        lineSelect0: '',
+        lineSelect1: '',
+        lineSelect2: '',
+        lineSelect3: '',
 				lineList: [],
 				otherPwrProd: [],
 				testData: {},
+        faultData: {},
+				workState: {},
+        alarmRt: {},
+        statusList: {},
 				alarmData: [[], [], []],
-				testLevel: '',
-				workState: [0, 0, 0, 0],
 				nxType: 0,
 				alarmType: 0,
 				alarms: [0, 0, 0],
@@ -238,19 +184,13 @@
 							label: "鍛婅寮�濮嬫椂闂�",
 							minWidth: 110,
 						},
-						// {
-						//   prop: "xuhang",
-						//   label: "棰勪及缁埅鏃堕暱",
-						//   minWidth: 110,
-						// },
 					],
 					data: [],
 				},
 			};
 		},
 		components: {
-			card,
-			BigScreenCard,
+			homeCard,
 			BatteryPieChart,
 			MapChart,
 			MapMarkList,
@@ -262,6 +202,8 @@
 			BarChartAlarm,
 			bar3d,
 			PowerPieChart,
+      svgSubway,
+      marqueeTop,
 		},
 		methods: {
 			alarmTypeChangede(value) {
@@ -279,30 +221,19 @@
 				res = JSON.parse(res.data);
 				// console.log(res, "=====111data");
 				let {
-					devStates,
-					stationCount,
-					battGroupInfo,
-					alarmsLevelWithStationName5,
-					devCountMap,
-					resTestdataInfAnalysis,
-					groupCap,
-					alarmsLevel,
-					dischargingBattery,
+					res_inf,
+          res_battState,
+          res_battAlarm,
+          res_station,
 				} = res.data;
 				// 绔欑偣鏁伴噺缁熻鏇存柊
-				this.updateSiteDev(devCountMap);
-				// 鏇存柊璁惧宸ヤ綔鐘舵��
-				this.updateWorkState(devStates);
-				// 鏇存柊鏁寸粍瀹归噺
-				this.updateGroupCap(groupCap);
+				this.updateSiteDev(res_inf);
 				// 娴嬭瘯淇℃伅 鏀逛负鍛婅淇℃伅
-				this.updateTestData(alarmsLevelWithStationName5);
-				// 鏇存柊鍦板浘
-				this.updateMap(devCountMap);
-				// 鏇存柊鍛婅缁熻
-				this.updateAlarms(alarmsLevel);
-				// // 瀹炴椂鏀剧數淇℃伅
-				// this.updateDischargeInfo(dischargingBattery);
+				this.updateTestData(res_battAlarm);
+				// 鏇存柊鐢垫睜鐘舵��
+				this.updateWorkState(res_battState);
+				// // 鏇存柊鍦板浘
+				this.updateMap(res_station);
 			},
 			onWSOpen2() {
 				this.sendMessage2();
@@ -353,21 +284,56 @@
 
 				// this.updateFlag = Math.random();
 			},
+      legendChange(data) {
+        console.log('data, ', data, '=============');
+        this.selectFlag = true;
+        let stionNum = 0;
+        let battNum = 0;
+        let devNum = 0;
+        let nums = this.nums;
+        Object.keys(data).forEach(v => {
+          if (data[v]) {
+            stionNum += nums[v].stionNum;
+            devNum += nums[v].devNum;
+            battNum += nums[v].battNum;
+          }
+        });
+        this.stationNum = stionNum;
+        this.devCount = devNum;
+        this.battGroupCount = battNum;
+      },
 			updateSiteDev(data) {
-				const { devCount, stationNum, battGroupCount, battGroupMonCount } = data.data2;
-				this.devCount = devCount;
-				this.stationNum = stationNum;
-				this.battGroupCount = battGroupCount;
-				this.battGroupMonCount = battGroupMonCount;
+				const { devNum, stionNum, battNum } = data.data2?.allmap || {};
+        if (!this.selectFlag) {
+          this.devCount = devNum || 0;
+          this.stationNum = stionNum || 0;
+          this.battGroupCount = battNum || 0;
+        }
+
+        let _data = data.data2;
+        let res = {};
+        Object.keys(_data).forEach(v => {
+          if (v != 'allmap') {
+            res[v + '鍙风嚎'] = _data[v];
+          }
+        });
+        this.nums = res;
 			},
 			updateWorkState(data) {
 				data = data.data2;
-				this.workState = [
-					data["鍐呴樆娴嬭瘯鏁伴噺"],
-					data["鏍稿娴嬭瘯鏁伴噺"],
-					data["鐩磋繛鍏呯數鏁伴噺"],
-					data["閫氳鏁呴殰鏁伴噺"],
-				];
+        let workList = {};
+        this.lineList.forEach(v => {
+          let item = v == 0 ? data['allmap'] : data[v];
+          let xLabel = [];
+          let sData = [];
+          Object.keys(item).forEach(vv => {
+            xLabel.push(vv);
+            sData.push(item[vv]);
+          });
+          workList[v] = {xLabel, sData};
+        });
+				this.workState = workList;
+        this.$refs.bar3d1.setData(this.workState[this.lineSelect2]);
 			},
 			updateGroupCap(obj) {
 				const { code, data, data3 } = obj;
@@ -389,123 +355,90 @@
 				this.cap.level3 = level3;
 				this.cap.level4 = level4;
 			},
-			// 鐢垫睜缁熻
-			updateBattInfo(obj) {
-				// let { code, data, data2 } = obj;
-				// let vol2 = 0,
-				//   vol12 = 0,
-				//   producer = [{ name: "鐢垫睜鍝佺墝", value: 0 }];
-				// if (code && data) {
-				//   vol2 = data2.monVol["2.0"];
-				//   vol12 = data2.monVol["12.0"];
-				//   let arr = Object.keys(data2.producer)
-				//     .map((v) => ({ name: v, value: data2.producer[v] }))
-				//     .sort((a, b) => b.value - a.value);
-				//   if (arr.length <= 5) {
-				//     producer = arr;
-				//   } else {
-				//     let name = "鍏朵粬";
-				//     let value = 0;
-				//     arr.splice(4).forEach((v) => {
-				//       value += v.value * 1;
-				//     });
-				//     arr.push({ name, value });
-				//     producer = arr;
-				//   }
-				// }
-				// this.$refs.batteryChart.setData(vol2, vol12, producer);
-			},
 
 			updateTestData(obj) {
-				let list_obj = obj.data2.data;
+				let list_obj = obj.data2.level;
 				let lineList = Object.keys(list_obj);
+        lineList.unshift(0);
 				if (!this.lineList.length) {
 					this.lineList = lineList;
-					this.testLevel = lineList[0];
+
+					this.lineSelect0 = 0;
+					this.lineSelect1 = 0;
+					this.lineSelect2 = 0;
+					this.lineSelect3 = 0;
 				}
 
 				let test = {};
 				lineList.forEach((item) => {
-					let _item = list_obj[item];
+					let _item = item == 0 ? obj.data2.allLevel : list_obj[item];
 					const {
-						level1,
-						level2,
-						level3,
-						level4,
+						1: level1,
+						2: level2,
+						3: level3,
+						4: level4,
 					} = _item;
 
 					test[item] = {
 						xLabel: ["涓�绾у憡璀�", "浜岀骇鍛婅", "涓夌骇鍛婅", "鍥涚骇鍛婅"],
 						sData: [
-							level1.battAlarmCount + level1.powerAlarmCount + level1.deviceAlarmCount,
-							level2.battAlarmCount + level2.powerAlarmCount + level2.deviceAlarmCount,
-							level3.battAlarmCount + level3.powerAlarmCount + level3.deviceAlarmCount,
-							level4.battAlarmCount + level4.powerAlarmCount + level4.deviceAlarmCount
+							level1,
+							level2,
+							level3,
+							level4
 						],
 					};
 				});
 				this.testData = test;
-				this.$refs.bar3d.setData(test[this.testLevel]);
+        // 鏁呴殰
+        let fault = {};
+        let _fault = obj.data2.type;
+        lineList.forEach(v => {
+          let _item = v == 0 ? obj.data2.allType : _fault[v];
+          let arr = [];
+          Object.keys(_item).forEach(vv => {
+            arr.push({
+              name: vv,
+              value: _item[vv]
+            });
+          });
+          fault[v] = arr;
+        });
+
+        this.faultData = fault;
+
+				this.$refs.bar3d0.setData(test[this.lineSelect0]);
+        this.$refs.pie.setData(fault[this.lineSelect1]);
+        // 鍛婅鍒楄〃
+        let alarmRt = {};
+        let alarmList = obj.data2.list;
+        lineList.forEach(v => {
+          let _list = v == 0 ? alarmList['allList'] : alarmList[v];
+          alarmRt[v] = _list;
+        });
+        this.alarmRt = alarmRt;
+        this.newItems = alarmRt[this.lineSelect3];
 			},
 			testLevelChange(value) {
-				this.$refs.bar3d.setData(this.testData[value]);
+        // TODO
+        switch(value) {
+          case 0:
+            this.$refs.bar3d0.setData(this.testData[this.lineSelect0]);
+            break;
+          case 1:
+            this.$refs.pie.setData(this.faultData[this.lineSelect1]);
+            break;
+          case 2:
+            this.$refs.bar3d1.setData(this.workState[this.lineSelect2]);
+            break;
+          case 3:
+            this.newItems = this.alarmRt[this.lineSelect3];
+            break;
+        }
 			},
 			// 鏇存柊鍦板浘
 			updateMap(obj) {
-				let data = obj.data2.stationInfList;
-				const getColor = (o) => {
-					let res = 0;
-					res = o.devWorkState <= 3 ? o.devWorkState : 0;
-					return ["#0081ff", "#66f842", "#ff6b6c", "#7668f9"][res];
-				};
-				this.$refs.map.setData(
-					data.map((v) => {
-						return {
-							...v,
-							label: v.stationName3,
-							color: getColor(v),
-							points: [v.stationLongitude, v.stationLatitude],
-							// 鏃犲疄闄呮剰涔�
-							value: 100,
-						};
-					})
-				);
-			},
-			// 鏇存柊鍛婅缁熻
-			updateAlarms(obj) {
-				let { level1, level2, level3, level4 } = obj.data2.data;
-				this.alarms = [
-					level1.powerAlarmCount,
-					level1.deviceAlarmCount,
-					level1.battAlarmCount,
-				];
-				this.alarmData = [
-					[
-						level1.powerAlarmCount,
-						level2.powerAlarmCount,
-						level3.powerAlarmCount,
-						level4.powerAlarmCount,
-					],
-					[
-						level1.deviceAlarmCount,
-						level2.deviceAlarmCount,
-						level3.deviceAlarmCount,
-						level4.deviceAlarmCount,
-					],
-					[
-						level1.battAlarmCount,
-						level2.battAlarmCount,
-						level3.battAlarmCount,
-						level4.battAlarmCount,
-					],
-				];
-				if (this.$refs.alarmPieChart) {
-					this.$refs.alarmPieChart.update();
-				}
-
-				if (this.$refs.chart_alarm) {
-					this.$refs.chart_alarm.setData(this.alarmData);
-				}
+				this.statusList = obj.data2 || {};
 			},
 			goDevWorkState(num) {
 				let status = num;
@@ -526,29 +459,6 @@
 					},
 				});
 			},
-			// updateDischargeInfo(obj) {
-			//   const { code, data, data2, msg } = obj;
-			//   let list = [];
-			//   if (code && data) {
-			//     let outTime = 2 * 60; //璁惧瓒呮椂鏃堕棿(2鍒嗛挓)
-			//     let nowTime = new Date(msg).getTime(); //褰撳墠鏃堕棿
-			//     list = data2
-			//       .filter((v) => {
-			//         // 鍒ゆ柇鏄惁瓒呮椂
-			//         let record = new Date(v.battTestRecordtime).getTime();
-			//         return Math.abs(nowTime - record) / 1000 <= outTime;
-			//       })
-			//       .map((v) => {
-			//         // v.stationArea =
-			//         //   v.stationName1 + " " + v.stationName2 + " " + v.stationName5;
-			//         v.battTestTimelong = formatSeconds(v.battTestTlong);
-			//         let xuhang = v.loadCurr ? v.battRealCap / v.loadCurr : 0;
-			//         v.xuhang = xuhang ? sethoubeiTime(xuhang) : "---";
-			//         return v;
-			//       });
-			//   }
-			//   this.tbl.data = list;
-			// },
 			goDevAlarm() {
 				this.$router.push({
 					path: "/alarmMager/deviceTimequery",
@@ -585,12 +495,20 @@
 				this.$router.push("/dataMager/battGroupMager");
 			},
 			initEvent() {
-				this.$refs.map.getChart().on("click", (e) => {
-					console.log('e', e, '=======123======');
+				// this.$refs.map.getChart().on("click", (e) => {
+				// 	console.log('e', e, '=======123======');
 
-				});
+				// });
 			},
 		},
+
+    computed: {
+      showMarquee() {
+        return typeof this.newItems == "undefined" || this.newItems.length == 0
+          ? false
+          : true;
+      },
+    },
 
 		mounted() {
 			if (this.$refs.alarmPieChart) {
@@ -604,18 +522,61 @@
 <style scoped lang="less">
 .p-main {
   height: 100%;
-  display: grid;
-  grid-auto-flow: column;
-  grid-template-rows: 1fr 1fr 1fr;
-  grid-template-columns: 1fr 1.5fr 1fr;
-  grid-gap: 8px;
+  // display: grid;
+  // grid-auto-flow: column;
+  // grid-template-rows: 1fr;
+  // grid-template-columns: 1fr 1.95fr 1fr;
+  // grid-gap: 8px;
+  display: flex;
 
-  /deep/ .big-screen-card {
+  .p-side {
+    flex: 1;
+    display: flex;
+    flex-direction: column;
+    padding-left: 36px;
+    padding-right: 58px;
+    position: relative;
+    &::before {
+      content: '';
+      position: absolute;
+      left: 0;
+      right: 0;
+      top: 0;
+      bottom: 0;
+      background: url(./images/bg-side.png) left center / auto 100% no-repeat,
+                url(./images/bg-card.png) left center / 100% 100% no-repeat;
+    }
+    &.p-right {
+      padding-left:  68px;
+      padding-right: 36px;
+      &::before {
+        transform: scaleX(-1);
+      }
+    }
+    .row {
+      margin-top: 50px;
+      margin-bottom: 50px;
+
+    }
+    .row~.row {
+      margin-top: 8px;
+    }
+  }
+    .row {
+      flex: 1;
+      :deep(.el-select) {
+        width: 8em;
+      }
+    }
+    
+
+  /deep/ .home-card {
     padding: 0;
   }
 
   .wraper {
-    grid-row-start: span 2;
+    flex: 2.4;
+    // grid-row-start: span 2;
     display: flex;
     flex-direction: column;
 
@@ -626,15 +587,26 @@
     .row2 {
       flex: 1.8;
       margin-top: 8px;
+      position: relative;
+      &::before {
+        content: '';
+        position: absolute;
+        left: 0;
+        right: 0;
+        top: 0;
+        bottom: 0;
+        background: url(./images/bg-map-sz.jpg) center center / cover no-repeat;
+        opacity: 0.6;
+      }
     }
   }
 
   .row.alarm {
-    grid-column-start: span 2;
+    // grid-column-start: span 2;
   }
 
   .row.test-info {
-    grid-row-start: span 2;
+    // grid-row-start: span 2;
   }
 }
 
@@ -731,26 +703,36 @@
   .item {
     cursor: pointer;
     display: flex;
+    flex-direction: column;
     // border-radius: 6px;
     align-items: center;
+    justify-content: center;
+    min-width: 10em;
+    min-height: 4em;
+    background: url(./images/bg-info.png) center center / contain no-repeat;
 
     .name {
-      background: #0ff;
-      border-radius: 6px;
-      color: #333;
-      font-size: 18px;
-      font-weight: bold;
-      padding: 0 10px;
+      // background: #0ff;
+      // border-radius: 6px;
+      // color: #333;
+      // font-size: 18px;
+      // font-weight: bold;
+      // padding: 0 10px;
+      font-size: 14px;
+      margin-top: 10px;
+      color: #0ff;
+      &::after {
+        content: ':';
+      }
     }
 
     .num {
-      width: 3em;
-      height: 1.5em;
-      padding: 0 10px;
-
-      &.bits5 {
-        width: 5em;
-      }
+      // width: 3em;
+      // height: 1.5em;
+      // padding: 0 10px;
+      color: #fbfc0d;
+      font-weight: bold;
+      font-size: 22px;
     }
   }
 }
@@ -767,6 +749,14 @@
     bottom: 0;
   }
 }
+.scroller-wraper {
+  position: absolute;
+  left: 0;
+  top: 30px;
+  right: 0;
+  bottom: 30px;
+  overflow: hidden;
+}
 
 /deep/ .mark-list-container {
   bottom: 0.4rem;

--
Gitblit v1.9.1