|
@@ -4,11 +4,14 @@
|
|
|
|
|
|
|
|
<div class="section" v-for="item in filteredList('control')" :key="item.type">
|
|
<div class="section" v-for="item in filteredList('control')" :key="item.type">
|
|
|
<div class="control-row">
|
|
<div class="control-row">
|
|
|
- <span class="label">车辆干扰排除</span>
|
|
|
|
|
- <div class="toggle-switch" :class="{ 'is-on': monitData.isRisk }">
|
|
|
|
|
|
|
+ <div class="tip">
|
|
|
|
|
+ <div class="icon"></div>
|
|
|
|
|
+ <span class="label">车辆干扰排除</span>
|
|
|
<span class="text">{{ monitData.isRisk ? '开启' : '关闭' }}</span>
|
|
<span class="text">{{ monitData.isRisk ? '开启' : '关闭' }}</span>
|
|
|
- <div class="slider"></div>
|
|
|
|
|
- <span class="text">{{ monitData.isRisk ? '关闭' : '开启' }}</span>
|
|
|
|
|
|
|
+ <div class="toggle-switch" :class="{ 'is-on': isOn }" @click="toggleSwitch">
|
|
|
|
|
+ <div class="slider"></div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <span class="text1">{{ monitData.isRisk ? '关闭' : '开启' }}</span>
|
|
|
</div>
|
|
</div>
|
|
|
<button class="btn-history">历史分析记录</button>
|
|
<button class="btn-history">历史分析记录</button>
|
|
|
</div>
|
|
</div>
|
|
@@ -19,315 +22,362 @@
|
|
|
<div class="section-title">{{ item.title }}</div>
|
|
<div class="section-title">{{ item.title }}</div>
|
|
|
<div class="activity-list">
|
|
<div class="activity-list">
|
|
|
<div class="activity-item" v-for="(act, idx) in monitData.activityList" :key="idx">
|
|
<div class="activity-item" v-for="(act, idx) in monitData.activityList" :key="idx">
|
|
|
- <span class="pos">{{ act.pos }}</span>
|
|
|
|
|
- <span class="vehicle">{{ act.vehicle }}</span>
|
|
|
|
|
- <span class="status" :class="getStatusClass(act.status)">
|
|
|
|
|
- {{ getStatusText(act.status) }}
|
|
|
|
|
- </span>
|
|
|
|
|
|
|
+ <div class="info">
|
|
|
|
|
+ <span class="pos">{{ act.pos }}</span>
|
|
|
|
|
+ <span class="vehicle">{{ act.vehicle }}</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="warnStatus">
|
|
|
|
|
+ <span class="status" :class="getStatusClass(act.status)"> </span>
|
|
|
|
|
+ <span class="status-text"> {{ getStatusText(act.status) }}</span>
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<!-- 3. CO浓度异常分析 (Analysis Section) -->
|
|
<!-- 3. CO浓度异常分析 (Analysis Section) -->
|
|
|
- <div class="section" v-for="item in filteredList('analysis')" :key="item.type">
|
|
|
|
|
- <div class="section-title">{{ item.title }}</div>
|
|
|
|
|
- <div class="analysis-list">
|
|
|
|
|
- <div class="analysis-item" v-for="(ana, idx) in monitData.analysisList" :key="idx">
|
|
|
|
|
- <span class="label">{{ ana.pos }}</span>
|
|
|
|
|
- <span class="text">{{ ana.analysisText }}</span>
|
|
|
|
|
|
|
+ <div class="section">
|
|
|
|
|
+ <div v-for="item in filteredList('analysis')" :key="item.type">
|
|
|
|
|
+ <div class="section-title">{{ item.title }}</div>
|
|
|
|
|
+ <div class="analysis-list">
|
|
|
|
|
+ <div class="analysis-item" v-for="(ana, idx) in monitData.analysisList" :key="idx">
|
|
|
|
|
+ <span class="label">{{ ana.pos }}</span>
|
|
|
|
|
+ <span class="text">{{ ana.analysisText }}</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <!-- 4. 可能原因与建议 (Reason Section) -->
|
|
|
|
|
+ <div v-for="i in filteredList('reasonAnalysis')" :key="i.type">
|
|
|
|
|
+ <div class="reason-item">
|
|
|
|
|
+ <span class="label">{{ i.items[0].label }}:</span>
|
|
|
|
|
+ <span class="value reason">{{ monitData.possibleCause }}</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="reason-item">
|
|
|
|
|
+ <span class="label">{{ i.items[1].label }}:</span>
|
|
|
|
|
+ <span class="value recommendation">{{ monitData.recommendation }}</span>
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 4. 可能原因与建议 (Reason Section) -->
|
|
|
|
|
- <div class="section" v-for="item in filteredList('reasonAnalysis')" :key="item.type">
|
|
|
|
|
- <div class="reason-item">
|
|
|
|
|
- <span class="label">{{ item.items[0].label }}:</span>
|
|
|
|
|
- <span class="value">{{ monitData.possibleCause }}</span>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="reason-item">
|
|
|
|
|
- <span class="label">{{ item.items[1].label }}:</span>
|
|
|
|
|
- <span class="value recommendation">{{ monitData.recommendation }}</span>
|
|
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script lang="ts" setup>
|
|
<script lang="ts" setup>
|
|
|
- import { computed } from 'vue';
|
|
|
|
|
-
|
|
|
|
|
- // 定义 Props,接收配置和模拟数据
|
|
|
|
|
- interface ConfigItem {
|
|
|
|
|
- type: string;
|
|
|
|
|
- title: string;
|
|
|
|
|
- readFrom?: string;
|
|
|
|
|
- items?: Array<{ label: string; code?: string; trans?: any }>;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- const props = withDefaults(
|
|
|
|
|
- defineProps<{
|
|
|
|
|
- list: ConfigItem[];
|
|
|
|
|
- data: {
|
|
|
|
|
- isRisk: boolean;
|
|
|
|
|
- activityList: Array<{ pos: string; vehicle: string; status: string }>;
|
|
|
|
|
- analysisList: Array<{ pos: string; analysisText: string }>;
|
|
|
|
|
- possibleCause: string;
|
|
|
|
|
- recommendation: string;
|
|
|
|
|
- };
|
|
|
|
|
- }>(),
|
|
|
|
|
- {
|
|
|
|
|
- list: () => [],
|
|
|
|
|
- data: () => ({
|
|
|
|
|
- isRisk: false,
|
|
|
|
|
- activityList: [],
|
|
|
|
|
- analysisList: [],
|
|
|
|
|
- possibleCause: '',
|
|
|
|
|
- recommendation: '',
|
|
|
|
|
- }),
|
|
|
|
|
- }
|
|
|
|
|
- );
|
|
|
|
|
-
|
|
|
|
|
- const monitData = computed(() => props.data);
|
|
|
|
|
- // --- 计算属性:根据 type 筛选配置项 ---
|
|
|
|
|
- const filteredList = (type: string) => {
|
|
|
|
|
- return props.list.filter((item) => item.type === type);
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- // --- 方法:获取状态类名和文本 ---
|
|
|
|
|
- const getStatusClass = (status: string) => {
|
|
|
|
|
- if (status === '0') return 'status-excluded';
|
|
|
|
|
- if (status === '1') return 'status-warning';
|
|
|
|
|
- return '';
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- const getStatusText = (status: string) => {
|
|
|
|
|
- if (status === '0') return '已排除';
|
|
|
|
|
- if (status === '1') return '预警';
|
|
|
|
|
- return '未知';
|
|
|
|
|
- };
|
|
|
|
|
|
|
+import { computed, ref } from 'vue';
|
|
|
|
|
+
|
|
|
|
|
+// 定义 Props,接收配置和模拟数据
|
|
|
|
|
+interface ConfigItem {
|
|
|
|
|
+ type: string;
|
|
|
|
|
+ title: string;
|
|
|
|
|
+ readFrom?: string;
|
|
|
|
|
+ items?: Array<{ label: string; code?: string; trans?: any }>;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const props = withDefaults(
|
|
|
|
|
+ defineProps<{
|
|
|
|
|
+ list: ConfigItem[];
|
|
|
|
|
+ data: {
|
|
|
|
|
+ isRisk: boolean;
|
|
|
|
|
+ activityList: Array<{ pos: string; vehicle: string; status: string }>;
|
|
|
|
|
+ analysisList: Array<{ pos: string; analysisText: string }>;
|
|
|
|
|
+ possibleCause: string;
|
|
|
|
|
+ recommendation: string;
|
|
|
|
|
+ };
|
|
|
|
|
+ }>(),
|
|
|
|
|
+ {
|
|
|
|
|
+ list: () => [],
|
|
|
|
|
+ data: () => ({
|
|
|
|
|
+ isRisk: false,
|
|
|
|
|
+ activityList: [],
|
|
|
|
|
+ analysisList: [],
|
|
|
|
|
+ possibleCause: '',
|
|
|
|
|
+ recommendation: '',
|
|
|
|
|
+ }),
|
|
|
|
|
+ }
|
|
|
|
|
+);
|
|
|
|
|
+
|
|
|
|
|
+const monitData = computed(() => props.data);
|
|
|
|
|
+// 自己维护开关状态,不依赖任何外部数据
|
|
|
|
|
+const isOn = ref(false);
|
|
|
|
|
+// --- 计算属性:根据 type 筛选配置项 ---
|
|
|
|
|
+const filteredList = (type: string) => {
|
|
|
|
|
+ return props.list.filter((item) => item.type === type);
|
|
|
|
|
+};
|
|
|
|
|
+//滑块滑动
|
|
|
|
|
+const toggleSwitch = () => {
|
|
|
|
|
+ // const isOn = monitData.isRisk;
|
|
|
|
|
+ isOn.value = !isOn.value;
|
|
|
|
|
+ console.log(monitData.isRisk, '123123');
|
|
|
|
|
+};
|
|
|
|
|
+// --- 方法:获取状态类名和文本 ---
|
|
|
|
|
+const getStatusClass = (status: string) => {
|
|
|
|
|
+ if (status === '0') return 'status-excluded';
|
|
|
|
|
+ if (status === '1') return 'status-warning';
|
|
|
|
|
+ return '';
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+const getStatusText = (status: string) => {
|
|
|
|
|
+ if (status === '0') return '已排除';
|
|
|
|
|
+ if (status === '1') return '预警';
|
|
|
|
|
+ return '未知';
|
|
|
|
|
+};
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
-<style scoped>
|
|
|
|
|
- /* 基础样式重置 */
|
|
|
|
|
- * {
|
|
|
|
|
- margin: 0;
|
|
|
|
|
- padding: 0;
|
|
|
|
|
- box-sizing: border-box;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .monitor-container {
|
|
|
|
|
- width: 400px;
|
|
|
|
|
- height: 410px;
|
|
|
|
|
- background: linear-gradient(180deg, #0d213f 0%, #0a162a 100%);
|
|
|
|
|
- border: 1px solid #1a3b5d;
|
|
|
|
|
- color: #fff;
|
|
|
|
|
- font-family: 'Microsoft YaHei', sans-serif;
|
|
|
|
|
- padding: 10px 15px;
|
|
|
|
|
- position: relative;
|
|
|
|
|
- /* overflow: hidden; */
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- /* 顶部标题样式 (虽然图里有,但数据配置里没单独标题,这里用 CSS 模拟顶部栏) */
|
|
|
|
|
- .monitor-container::before {
|
|
|
|
|
- content: '';
|
|
|
|
|
- position: absolute;
|
|
|
|
|
- top: 0;
|
|
|
|
|
- left: 0;
|
|
|
|
|
- right: 0;
|
|
|
|
|
- height: 3px;
|
|
|
|
|
- background: linear-gradient(90deg, #00c6ff, #0072ff);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- /* 通用区块样式 */
|
|
|
|
|
- .section {
|
|
|
|
|
- margin-bottom: 15px;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .section-title {
|
|
|
|
|
- font-size: 12px;
|
|
|
|
|
- color: #4fd1ff;
|
|
|
|
|
- font-weight: bold;
|
|
|
|
|
- border-left: 3px solid #00c6ff;
|
|
|
|
|
- padding-left: 8px;
|
|
|
|
|
- margin-bottom: 8px;
|
|
|
|
|
- letter-spacing: 1px;
|
|
|
|
|
|
|
+<style scoped lang="less">
|
|
|
|
|
+/* 基础样式重置 */
|
|
|
|
|
+* {
|
|
|
|
|
+ margin: 0;
|
|
|
|
|
+ padding: 0;
|
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.monitor-container {
|
|
|
|
|
+ width: 400px;
|
|
|
|
|
+ height: 410px;
|
|
|
|
|
+ background: linear-gradient(180deg, #0d213f 0%, #0a162a 100%);
|
|
|
|
|
+ border: 1px solid #1a3b5d;
|
|
|
|
|
+ color: #fafafa;
|
|
|
|
|
+ font-family: 'Microsoft YaHei', sans-serif;
|
|
|
|
|
+ padding: 10px 15px;
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+ /* overflow: hidden; */
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* 顶部标题样式 (虽然图里有,但数据配置里没单独标题,这里用 CSS 模拟顶部栏) */
|
|
|
|
|
+.monitor-container::before {
|
|
|
|
|
+ content: '';
|
|
|
|
|
+ position: absolute;
|
|
|
|
|
+ top: 0;
|
|
|
|
|
+ left: 0;
|
|
|
|
|
+ right: 0;
|
|
|
|
|
+ height: 3px;
|
|
|
|
|
+ background: linear-gradient(90deg, #00c6ff, #0072ff);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* 通用区块样式 */
|
|
|
|
|
+.section {
|
|
|
|
|
+ margin-bottom: 15px;
|
|
|
|
|
+ background: url('@/assets/images/beltFire/fireMonitor/2-1.png') no-repeat;
|
|
|
|
|
+ background-size: 100% 100%;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.section-title {
|
|
|
|
|
+ background: url('@/assets/images/beltFire/fireMonitor/2-2.png') no-repeat;
|
|
|
|
|
+ background-size: 35% 100%;
|
|
|
|
|
+ font-size: 12px;
|
|
|
|
|
+ color: #fafafa;
|
|
|
|
|
+ font-weight: bold;
|
|
|
|
|
+ font-style: italic;
|
|
|
|
|
+ margin-bottom: 8px;
|
|
|
|
|
+ padding-bottom: 5px;
|
|
|
|
|
+ padding-left: 10px;
|
|
|
|
|
+ padding-top: 5px;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* 1. 控制区样式 (开关) */
|
|
|
|
|
+.control-row {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ justify-content: flex-start;
|
|
|
|
|
+ border-radius: 4px;
|
|
|
|
|
+}
|
|
|
|
|
+.tip {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: space-around;
|
|
|
|
|
+ height: 30px;
|
|
|
|
|
+ width: 70%;
|
|
|
|
|
+ background: url('@/assets/images/beltFire/fireMonitor/2-11.png') no-repeat;
|
|
|
|
|
+ background-size: 100% 100%;
|
|
|
|
|
+ .icon {
|
|
|
|
|
+ background: url('@/assets/images/beltFire/fireMonitor/2-10.svg') no-repeat;
|
|
|
|
|
+ background-size: 100% 100%;
|
|
|
|
|
+ height: 12px;
|
|
|
|
|
+ width: 12px;
|
|
|
|
|
+ margin-left: 2px;
|
|
|
|
|
+ margin-top: 8px;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- /* 1. 控制区样式 (开关) */
|
|
|
|
|
- .control-row {
|
|
|
|
|
- display: flex;
|
|
|
|
|
- align-items: center;
|
|
|
|
|
- justify-content: space-between;
|
|
|
|
|
- background: rgba(0, 0, 0, 0.2);
|
|
|
|
|
- padding: 5px 10px;
|
|
|
|
|
- border-radius: 4px;
|
|
|
|
|
- margin-bottom: 15px;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
.label {
|
|
.label {
|
|
|
- font-size: 13px;
|
|
|
|
|
- color: #fff;
|
|
|
|
|
- text-align: left;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .toggle-switch {
|
|
|
|
|
- display: flex;
|
|
|
|
|
- align-items: center;
|
|
|
|
|
- width: 120px;
|
|
|
|
|
- height: 26px;
|
|
|
|
|
- background: #1a2b42;
|
|
|
|
|
- border-radius: 13px;
|
|
|
|
|
- padding: 2px;
|
|
|
|
|
- cursor: pointer;
|
|
|
|
|
- position: relative;
|
|
|
|
|
- overflow: hidden;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .toggle-switch.is-on {
|
|
|
|
|
- background: #00c6ff;
|
|
|
|
|
|
|
+ padding: 5px;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- .toggle-switch .text {
|
|
|
|
|
- flex: 1;
|
|
|
|
|
- text-align: center;
|
|
|
|
|
|
|
+ .text {
|
|
|
|
|
+ line-height: 30px;
|
|
|
font-size: 11px;
|
|
font-size: 11px;
|
|
|
- color: #7f9cb3;
|
|
|
|
|
- transition: color 0.2s;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .toggle-switch.is-on .text {
|
|
|
|
|
- color: #fff;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .toggle-switch .text:first-child {
|
|
|
|
|
- color: #fff;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .toggle-switch.is-on .text:first-child {
|
|
|
|
|
- color: #000;
|
|
|
|
|
|
|
+ padding-left: 20px;
|
|
|
}
|
|
}
|
|
|
|
|
+ .text1 {
|
|
|
|
|
+ line-height: 30px;
|
|
|
|
|
+ font-size: 11px;
|
|
|
|
|
+ padding-left: 0px;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+.label {
|
|
|
|
|
+ padding-left: 5px;
|
|
|
|
|
+ font-size: 12px;
|
|
|
|
|
+ color: #fafafa;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.toggle-switch {
|
|
|
|
|
+ display: inline-flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+ padding: 5px 5px;
|
|
|
|
|
+ width: 50px;
|
|
|
|
|
+ height: 20px;
|
|
|
|
|
+ border-radius: 15px;
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ border: 1px solid #15567f;
|
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
|
+ margin-top: 3px;
|
|
|
|
|
+ background: #0f2840; /* 加背景更美观 */
|
|
|
|
|
|
|
|
.slider {
|
|
.slider {
|
|
|
- width: 22px;
|
|
|
|
|
- height: 22px;
|
|
|
|
|
- background: #fff;
|
|
|
|
|
- border-radius: 50%;
|
|
|
|
|
position: absolute;
|
|
position: absolute;
|
|
|
- top: 2px;
|
|
|
|
|
- left: 2px;
|
|
|
|
|
- transition: transform 0.2s ease;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .toggle-switch.is-on .slider {
|
|
|
|
|
- transform: translateX(64px);
|
|
|
|
|
- background: #fff;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .btn-history {
|
|
|
|
|
- background: rgba(0, 198, 255, 0.1);
|
|
|
|
|
- border: 1px solid #00c6ff;
|
|
|
|
|
- color: #00c6ff;
|
|
|
|
|
- font-size: 11px;
|
|
|
|
|
- padding: 2px 8px;
|
|
|
|
|
- border-radius: 2px;
|
|
|
|
|
- cursor: pointer;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ top: 3px;
|
|
|
|
|
+ width: 12px;
|
|
|
|
|
+ height: 12px;
|
|
|
|
|
+ border-radius: 50%;
|
|
|
|
|
+ background-color: #ffffff;
|
|
|
|
|
+ transition: all 0.3s ease;
|
|
|
|
|
+ z-index: 1;
|
|
|
|
|
|
|
|
- .btn-history:hover {
|
|
|
|
|
- background: rgba(0, 198, 255, 0.2);
|
|
|
|
|
|
|
+ /* 默认关闭:左边 */
|
|
|
|
|
+ left: 3px;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- /* 2. 车辆活动列表 */
|
|
|
|
|
- .activity-list {
|
|
|
|
|
- background: rgba(0, 0, 0, 0.1);
|
|
|
|
|
- border-radius: 4px;
|
|
|
|
|
- padding: 8px 0;
|
|
|
|
|
|
|
+ /* 开启:滑块去右边 */
|
|
|
|
|
+ &.is-on {
|
|
|
|
|
+ .slider {
|
|
|
|
|
+ left: calc(100% - 15px);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- .activity-item {
|
|
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.btn-history {
|
|
|
|
|
+ background: linear-gradient(180deg, #34b7f1 0%, #1890ff 100%);
|
|
|
|
|
+ border: 1px solid #40c4ff;
|
|
|
|
|
+ color: #fafafa;
|
|
|
|
|
+ font-size: 11px;
|
|
|
|
|
+ padding: 2px 6px;
|
|
|
|
|
+ margin-left: 10px;
|
|
|
|
|
+ box-shadow: 0 0 6px 2px rgba(24, 144, 255, 0.4);
|
|
|
|
|
+ display: inline-flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.btn-history:hover {
|
|
|
|
|
+ background: rgba(0, 198, 255, 0.2);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* 2. 车辆活动列表 */
|
|
|
|
|
+.activity-list {
|
|
|
|
|
+ border-radius: 4px;
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.activity-item {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ justify-content: flex-start;
|
|
|
|
|
+ padding: 5px 8px;
|
|
|
|
|
+ color: #fafafa;
|
|
|
|
|
+ font-size: 12px;
|
|
|
|
|
+
|
|
|
|
|
+ .info {
|
|
|
display: flex;
|
|
display: flex;
|
|
|
- padding: 4px 10px;
|
|
|
|
|
- font-size: 12px;
|
|
|
|
|
- border-bottom: 1px solid rgba(255, 255, 255, 0.05);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .activity-item:last-child {
|
|
|
|
|
- border-bottom: none;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .pos {
|
|
|
|
|
- flex: 1;
|
|
|
|
|
- color: #a0cfff;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .vehicle {
|
|
|
|
|
- flex: 2;
|
|
|
|
|
- color: #fff;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .status {
|
|
|
|
|
- padding: 2px 6px;
|
|
|
|
|
- border-radius: 2px;
|
|
|
|
|
- font-size: 10px;
|
|
|
|
|
- font-weight: bold;
|
|
|
|
|
- color: #fff;
|
|
|
|
|
- min-width: 40px;
|
|
|
|
|
- text-align: center;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .status-excluded {
|
|
|
|
|
- background: #00c853;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .status-warning {
|
|
|
|
|
- background: #ff5252;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- /* 3. CO浓度分析列表 */
|
|
|
|
|
- .analysis-list {
|
|
|
|
|
- font-size: 12px;
|
|
|
|
|
- line-height: 1.6;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .analysis-item {
|
|
|
|
|
- margin-bottom: 8px;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .analysis-item .label {
|
|
|
|
|
- color: #ff9800;
|
|
|
|
|
- font-weight: bold;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .analysis-item .text {
|
|
|
|
|
- color: #fff;
|
|
|
|
|
- margin-left: 5px;
|
|
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ padding: 2px 12px;
|
|
|
|
|
+ gap: 60px;
|
|
|
|
|
+ color: #fafafa;
|
|
|
|
|
+ background: url('@/assets/images/beltFire/fireMonitor/2-4.png') no-repeat;
|
|
|
|
|
+ background-size: 100% 100%;
|
|
|
|
|
+ .pos,
|
|
|
|
|
+ .vehicle {
|
|
|
|
|
+ color: #fafafa;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- /* 4. 原因与建议 */
|
|
|
|
|
- .reason-item {
|
|
|
|
|
|
|
+ .warnStatus {
|
|
|
display: flex;
|
|
display: flex;
|
|
|
- align-items: flex-start;
|
|
|
|
|
- font-size: 12px;
|
|
|
|
|
- line-height: 1.6;
|
|
|
|
|
- margin-bottom: 8px;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .reason-item .label {
|
|
|
|
|
- color: #ff9800;
|
|
|
|
|
- font-weight: bold;
|
|
|
|
|
- width: 55px;
|
|
|
|
|
- text-align: left;
|
|
|
|
|
- margin-right: 10px;
|
|
|
|
|
- white-space: nowrap;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .reason-item .value {
|
|
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ justify-content: space-around;
|
|
|
|
|
+ margin-left: 10px;
|
|
|
|
|
+ padding: 2px 10px;
|
|
|
flex: 1;
|
|
flex: 1;
|
|
|
- color: #fff;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .recommendation {
|
|
|
|
|
- color: #ff5252;
|
|
|
|
|
- font-weight: bold;
|
|
|
|
|
|
|
+ background: url('@/assets/images/beltFire/fireMonitor/2-4.png') no-repeat;
|
|
|
|
|
+ background-size: 100% 100%;
|
|
|
|
|
+ .status {
|
|
|
|
|
+ width: 6px;
|
|
|
|
|
+ height: 6px;
|
|
|
|
|
+ border-radius: 50%;
|
|
|
|
|
+ background-color: #38e4ef;
|
|
|
|
|
+ box-shadow: 0 0 8px 2px rgba(56, 228, 239, 0.6);
|
|
|
|
|
+ &.status-excluded {
|
|
|
|
|
+ background-color: #006eff;
|
|
|
|
|
+ box-shadow: 0 0 8px 2px rgba(29, 146, 255, 0);
|
|
|
|
|
+ }
|
|
|
|
|
+ &.status-warning {
|
|
|
|
|
+ background-color: #ff3333;
|
|
|
|
|
+ box-shadow: 0 0 8px 2px rgba(255, 51, 51, 0.6);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ .status-text {
|
|
|
|
|
+ color: #fafafa;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* 3. CO浓度分析列表 */
|
|
|
|
|
+.analysis-list {
|
|
|
|
|
+ font-size: 12px;
|
|
|
|
|
+ line-height: 1.6;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.analysis-item {
|
|
|
|
|
+ background: url('@/assets/images/beltFire/fireMonitor/2-4.png') no-repeat;
|
|
|
|
|
+ background-size: 100% 100%;
|
|
|
|
|
+ padding: 4px 8px;
|
|
|
|
|
+ margin-bottom: 8px;
|
|
|
|
|
+ margin: 10px 8px;
|
|
|
|
|
+ width: 95%;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.analysis-item .label {
|
|
|
|
|
+ color: #fafafa;
|
|
|
|
|
+ font-weight: bold;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.analysis-item .text {
|
|
|
|
|
+ color: #fafafa;
|
|
|
|
|
+ margin-left: 5px;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/* 4. 原因与建议 */
|
|
|
|
|
+.reason-item {
|
|
|
|
|
+ background: url('@/assets/images/beltFire/fireMonitor/2-4.png') no-repeat;
|
|
|
|
|
+ background-size: 100% 100%;
|
|
|
|
|
+ padding: 4px 8px;
|
|
|
|
|
+ margin-bottom: 8px;
|
|
|
|
|
+ margin: 10px 8px;
|
|
|
|
|
+ width: 95%;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ font-size: 12px;
|
|
|
|
|
+ font-weight: bold;
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.reason-item .label {
|
|
|
|
|
+ color: #fafafa;
|
|
|
|
|
+ width: 55px;
|
|
|
|
|
+ margin-right: 10px;
|
|
|
|
|
+ white-space: nowrap;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.reason-item .reason {
|
|
|
|
|
+ color: #e6941f;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.recommendation {
|
|
|
|
|
+ color: #ff5252;
|
|
|
|
|
+}
|
|
|
</style>
|
|
</style>
|