|
@@ -6,10 +6,16 @@
|
|
|
<template #title>
|
|
|
<div>设备信息监测</div>
|
|
|
</template>
|
|
|
- <template #container v-if="dataSource.length > 0 ">
|
|
|
+ <template #container v-if="dataSource.length > 0">
|
|
|
<div v-for="(monitor, key) in deviceMonitorData" :key="key" class="monitor-item">
|
|
|
<div class="item-title">{{ monitor.text }}</div>
|
|
|
- <div class="item-val">{{ key.startsWith('1#') ? dataSource[0][key.split('_')[1]]||'-' : key.startsWith('2#') ? dataSource[1][key.split('_')[1]]||'-' : (dataSource[0][key] || '-') }}</div>
|
|
|
+ <div class="item-val">{{
|
|
|
+ key.startsWith('1#')
|
|
|
+ ? dataSource[0][key.split('_')[1]] || '-'
|
|
|
+ : key.startsWith('2#')
|
|
|
+ ? dataSource[1][key.split('_')[1]] || '-'
|
|
|
+ : dataSource[0][key] || '-'
|
|
|
+ }}</div>
|
|
|
<div class="item-unit">{{ monitor.unit }}</div>
|
|
|
</div>
|
|
|
</template>
|
|
@@ -21,8 +27,7 @@
|
|
|
<div>近一月报警情况</div>
|
|
|
</template>
|
|
|
<template #container>
|
|
|
- <dv-scroll-board ref="scrollBoard" :config="warningConfig"
|
|
|
- style="width: 100%; height: 240px; overflow-y: auto; " />
|
|
|
+ <dv-scroll-board ref="scrollBoard" :config="warningConfig" style="width: 100%; height: 240px; overflow-y: auto" />
|
|
|
</template>
|
|
|
</ventBox1>
|
|
|
</div>
|
|
@@ -36,21 +41,27 @@
|
|
|
<template #title>
|
|
|
<div>设备设施集中控制</div>
|
|
|
</template>
|
|
|
- <template #container >
|
|
|
+ <template #container>
|
|
|
<div class="control-group">
|
|
|
<div class="control-item" v-for="(item, key) in deviceControlData" :key="key">
|
|
|
<div class="control-item-title">{{ item }}</div>
|
|
|
<div class="control-item-state" v-if="!key.startsWith('2#')">
|
|
|
- <a-switch v-model="dataSource[0][key.split('_')[1]]" size="small" checked-children="开启"
|
|
|
+ <a-switch
|
|
|
+ v-model="dataSource[0][key.split('_')[1]]"
|
|
|
+ size="small"
|
|
|
+ checked-children="开启"
|
|
|
un-checked-children="关闭"
|
|
|
- @change="handlerDevice(dataSource[0][key.split('_')[1]])">
|
|
|
- </a-switch>
|
|
|
+ @change="handlerDevice(dataSource[0][key.split('_')[1]])"
|
|
|
+ />
|
|
|
</div>
|
|
|
<div class="control-item-state" v-else>
|
|
|
- <a-switch v-model="dataSource[1][key.split('_')[1]]" size="small" checked-children="开启"
|
|
|
+ <a-switch
|
|
|
+ v-model="dataSource[1][key.split('_')[1]]"
|
|
|
+ size="small"
|
|
|
+ checked-children="开启"
|
|
|
un-checked-children="关闭"
|
|
|
- @change="handlerDevice(dataSource[1][key.split('_')[1]])">
|
|
|
- </a-switch>
|
|
|
+ @change="handlerDevice(dataSource[1][key.split('_')[1]])"
|
|
|
+ />
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -58,32 +69,32 @@
|
|
|
<div class="control-btn-group">
|
|
|
<div class="control-left-box">
|
|
|
<div class="btn-box">
|
|
|
- <span @click="handlerDevice({ remote : true})">远程</span>
|
|
|
+ <span @click="handlerDevice({ remote: true })">远程</span>
|
|
|
<span @click="handlerDevice({ remote: false })">就地</span>
|
|
|
</div>
|
|
|
- <div class="icon-box" :class="{'remote-icon-box': true}">
|
|
|
+ <div class="icon-box" :class="{ 'remote-icon-box': true }">
|
|
|
<div class="icon"></div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="control-right-box">
|
|
|
- <a-button class="btn" type="primary" @click="handlerDevice({run: true})">一键启动</a-button>
|
|
|
+ <a-button class="btn" type="primary" @click="handlerDevice({ run: true })">一键启动</a-button>
|
|
|
<a-button type="primary" danger @click="handlerDevice({ run: false })">紧急停止</a-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
<a-divider style="height: 1px; background-color: #d7d7d755" />
|
|
|
- <div class="parameter-btn-group">
|
|
|
- <a-button type="primary" @click="openModal('RunParameterModal')">参数设置</a-button>
|
|
|
- <a-button type="primary" @click="openModal('WarningParameterModal')">报警设置</a-button>
|
|
|
+ <div class="parameter-btn-group">
|
|
|
+ <a-button type="primary" @click="openModal('RunParameterModal')">参数设置</a-button>
|
|
|
+ <a-button type="primary" @click="openModal('WarningParameterModal')">报警设置</a-button>
|
|
|
</div>
|
|
|
</template>
|
|
|
- </ventBox1>
|
|
|
+ </ventBox1>
|
|
|
</div>
|
|
|
<div class="control-container item-box echarts-box">
|
|
|
<ventBox1>
|
|
|
<template #title>
|
|
|
<div>设备实时监测曲线</div>
|
|
|
</template>
|
|
|
- <template #container >
|
|
|
+ <template #container>
|
|
|
<div class="btn-group">
|
|
|
<span class="active">注浆流量</span>
|
|
|
<span>注浆压力</span>
|
|
@@ -93,437 +104,447 @@
|
|
|
<div class="item-box echarts-container">
|
|
|
<div class="echarts-group">
|
|
|
<div class="echarts-item">
|
|
|
- <BarAndLineCustom xAxisPropType="readTime" :chartData="dataSource" height="240px" :propTypeArr="['flowRate']" :option="zhujiangOption" />
|
|
|
+ <BarAndLineCustom
|
|
|
+ xAxisPropType="readTime"
|
|
|
+ :chartData="dataSource"
|
|
|
+ height="240px"
|
|
|
+ :propTypeArr="['flowRate']"
|
|
|
+ :option="zhujiangOption"
|
|
|
+ />
|
|
|
</div>
|
|
|
<div class="echarts-item">
|
|
|
- <BarAndLineCustom xAxisPropType="readTime" :chartData="dataSource" height="240px" :propTypeArr="['pressure']" :option="yaliOption" />
|
|
|
+ <BarAndLineCustom
|
|
|
+ xAxisPropType="readTime"
|
|
|
+ :chartData="dataSource"
|
|
|
+ height="240px"
|
|
|
+ :propTypeArr="['pressure']"
|
|
|
+ :option="yaliOption"
|
|
|
+ />
|
|
|
</div>
|
|
|
<div class="echarts-item">
|
|
|
- <BarAndLineCustom xAxisPropType="readTime" :chartData="dataSource" height="240px" :propTypeArr="['flowRate']" :option="zhujiangOption" />
|
|
|
+ <BarAndLineCustom
|
|
|
+ xAxisPropType="readTime"
|
|
|
+ :chartData="dataSource"
|
|
|
+ height="240px"
|
|
|
+ :propTypeArr="['flowRate']"
|
|
|
+ :option="zhujiangOption"
|
|
|
+ />
|
|
|
</div>
|
|
|
<div class="echarts-item">
|
|
|
- <BarAndLineCustom xAxisPropType="readTime" :chartData="dataSource" height="240px" :propTypeArr="['flowRate']" :option="zhujiangOption" />
|
|
|
+ <BarAndLineCustom
|
|
|
+ xAxisPropType="readTime"
|
|
|
+ :chartData="dataSource"
|
|
|
+ height="240px"
|
|
|
+ :propTypeArr="['flowRate']"
|
|
|
+ :option="zhujiangOption"
|
|
|
+ />
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
|
</ventBox1>
|
|
|
</div>
|
|
|
-
|
|
|
</div>
|
|
|
</div>
|
|
|
<component v-if="modalVisible" :is="currentModal" v-model:visible="modalVisible" />
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
+ import { onBeforeMount, ref, onMounted, onUnmounted, shallowRef, defineProps, ComponentOptions, reactive } from 'vue';
|
|
|
+ import { mountedThree, destroy, setModelType } from '../grout.threejs';
|
|
|
+ import { ScrollBoard as DvScrollBoard } from '@kjgl77/datav-vue3';
|
|
|
+ import ventBox1 from '/@/components/vent/ventBox1.vue';
|
|
|
+ import RunParameterModal from './runParameter.modal.vue';
|
|
|
+ import WarningParameterModal from './warningParameter.modal.vue';
|
|
|
+ import { warningConfig, zhujiangOption, yaliOption } from '../grout.data';
|
|
|
+ import { list } from '../grout.api';
|
|
|
+ import BarAndLineCustom from '/@/components/chart/BarAndLineCustom.vue';
|
|
|
|
|
|
-import { onBeforeMount, ref, onMounted, onUnmounted, shallowRef, defineProps, ComponentOptions, reactive } from 'vue';
|
|
|
-import { mountedThree, destroy, setModelType } from '../grout.threejs';
|
|
|
-import { ScrollBoard as DvScrollBoard } from '@kjgl77/datav-vue3';
|
|
|
-import ventBox1 from '/@/components/vent/ventBox1.vue';
|
|
|
-import RunParameterModal from './runParameter.modal.vue'
|
|
|
-import WarningParameterModal from './warningParameter.modal.vue'
|
|
|
-import { warningConfig, zhujiangOption, yaliOption } from '../grout.data'
|
|
|
-import { list } from '../grout.api';
|
|
|
-import BarAndLineCustom from '/@/components/chart/BarAndLineCustom.vue';
|
|
|
-
|
|
|
+ const props = defineProps({
|
|
|
+ deviceId: {
|
|
|
+ type: String,
|
|
|
+ require: true,
|
|
|
+ },
|
|
|
+ deviceType: {
|
|
|
+ type: String,
|
|
|
+ require: true,
|
|
|
+ },
|
|
|
+ });
|
|
|
+ const left: string = '0px';
|
|
|
+ const currentModal = shallowRef<Nullable<ComponentOptions>>(null); //模态框
|
|
|
+ const modalVisible = ref<Boolean>(false); // 模态框是否可见
|
|
|
+ const loading = ref(false);
|
|
|
|
|
|
-const props = defineProps({
|
|
|
- deviceId: {
|
|
|
- type: String,
|
|
|
- require: true
|
|
|
- },
|
|
|
- deviceType: {
|
|
|
- type: String,
|
|
|
- require: true
|
|
|
- }
|
|
|
-})
|
|
|
-const left: string = "0px";
|
|
|
-const currentModal = shallowRef<Nullable<ComponentOptions>>(null); //模态框
|
|
|
-const modalVisible = ref<Boolean>(false); // 模态框是否可见
|
|
|
-const loading = ref(false);
|
|
|
+ // 默认初始是第一行
|
|
|
+ const dataSource = ref([
|
|
|
+ {
|
|
|
+ waterSupply: '-',
|
|
|
+ beltVla: '-',
|
|
|
+ density: '-',
|
|
|
+ pressure: '-',
|
|
|
+ liquidLevel: '-',
|
|
|
+ flowRate: '-',
|
|
|
+ readTime: '',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ waterSupply: '-',
|
|
|
+ beltVla: '-',
|
|
|
+ density: '-',
|
|
|
+ pressure: '-',
|
|
|
+ liquidLevel: '-',
|
|
|
+ flowRate: '-',
|
|
|
+ readTime: '',
|
|
|
+ },
|
|
|
+ ]); //dusting
|
|
|
|
|
|
-// 默认初始是第一行
|
|
|
-const dataSource = ref([
|
|
|
- {
|
|
|
- waterSupply : '-',
|
|
|
- beltVla: '-',
|
|
|
- density: '-',
|
|
|
- pressure: '-',
|
|
|
- liquidLevel: '-',
|
|
|
- flowRate: '-',
|
|
|
- readTime: '',
|
|
|
- },
|
|
|
- {
|
|
|
- waterSupply: '-',
|
|
|
- beltVla: '-',
|
|
|
- density: '-',
|
|
|
- pressure: '-',
|
|
|
- liquidLevel: '-',
|
|
|
- flowRate: '-',
|
|
|
- readTime: '',
|
|
|
- }
|
|
|
-]); //dusting
|
|
|
+ const deviceMonitorData = {
|
|
|
+ '1#_waterSupply': { text: '1#制浆机供水流量', unit: 'm³/h' },
|
|
|
+ '1#_beltVla': { text: '1#皮带秤数值', unit: 'T' },
|
|
|
+ '2#_waterSupply': { text: '2#制浆机供水流量', unit: 'm³/h' },
|
|
|
+ '2#_beltVla': { text: '2#皮带秤数值', unit: 'T' },
|
|
|
+ density: { text: '密度', unit: 'g/cm' },
|
|
|
+ pressure: { text: '压力', unit: 'MPa' },
|
|
|
+ liquidLevel: { text: '缓冲池液位', unit: 'm' },
|
|
|
+ flowRate: { text: '注浆流量', unit: 'm³/h' },
|
|
|
+ };
|
|
|
+ const deviceControlData = {
|
|
|
+ '1#_waterPump': '1#清水泵',
|
|
|
+ '1#_groutingPump': '1#注浆泵',
|
|
|
+ '1#_pulpingMachine': '1#制浆机',
|
|
|
+ '2#_waterPump': '2#清水泵',
|
|
|
+ '2#_groutingPump': '2#注浆泵',
|
|
|
+ '2#_pulpingMachine': '2#制浆机',
|
|
|
+ 'liquidLevelProtect ': '液位保护',
|
|
|
+ };
|
|
|
|
|
|
-const deviceMonitorData = {
|
|
|
- '1#_waterSupply': { text: '1#制浆机供水流量', unit: 'm³/h' },
|
|
|
- '1#_beltVla': { text: '1#皮带秤数值', unit: 'T' },
|
|
|
- '2#_waterSupply': { text: '2#制浆机供水流量', unit: 'm³/h' },
|
|
|
- '2#_beltVla': { text: '2#皮带秤数值', unit: 'T' },
|
|
|
- density: {text: '密度' , unit: 'g/cm'},
|
|
|
- pressure: { text: '压力', unit: 'MPa' },
|
|
|
- liquidLevel: { text: '缓冲池液位', unit: 'm' },
|
|
|
- flowRate: { text: '注浆流量', unit: 'm³/h' },
|
|
|
-}
|
|
|
-const deviceControlData = {
|
|
|
- '1#_waterPump': '1#清水泵',
|
|
|
- '1#_groutingPump': '1#注浆泵',
|
|
|
- '1#_pulpingMachine': '1#制浆机',
|
|
|
- '2#_waterPump': '2#清水泵',
|
|
|
- '2#_groutingPump': '2#注浆泵',
|
|
|
- '2#_pulpingMachine': '2#制浆机',
|
|
|
- 'liquidLevelProtect ':'液位保护'
|
|
|
-}
|
|
|
+ const flvURL1 = () => {
|
|
|
+ return `https://sf1-hscdn-tos.pstatp.com/obj/media-fe/xgplayer_doc_video/flv/xgplayer-demo-360p.flv`;
|
|
|
+ // return ''
|
|
|
+ };
|
|
|
+ const openModal = (modalName) => {
|
|
|
+ modalVisible.value = true;
|
|
|
+ if (modalName == 'RunParameterModal') {
|
|
|
+ currentModal.value = RunParameterModal;
|
|
|
+ } else {
|
|
|
+ currentModal.value = WarningParameterModal;
|
|
|
+ }
|
|
|
+ };
|
|
|
|
|
|
-const flvURL1 = () => {
|
|
|
- return `https://sf1-hscdn-tos.pstatp.com/obj/media-fe/xgplayer_doc_video/flv/xgplayer-demo-360p.flv`;
|
|
|
- // return ''
|
|
|
-};
|
|
|
-const openModal = (modalName) => {
|
|
|
- modalVisible.value = true
|
|
|
- if(modalName == 'RunParameterModal'){
|
|
|
- currentModal.value = RunParameterModal
|
|
|
- }else{
|
|
|
- currentModal.value = WarningParameterModal
|
|
|
+ // https获取监测数据
|
|
|
+ let timer: null | NodeJS.Timeout = null;
|
|
|
+ function getMonitor(flag?) {
|
|
|
+ if (Object.prototype.toString.call(timer) === '[object Null]') {
|
|
|
+ timer = setTimeout(
|
|
|
+ async () => {
|
|
|
+ await getDataSource();
|
|
|
+ if (timer) {
|
|
|
+ timer = null;
|
|
|
+ }
|
|
|
+ await getMonitor();
|
|
|
+ },
|
|
|
+ flag ? 0 : 1000
|
|
|
+ );
|
|
|
+ }
|
|
|
}
|
|
|
-}
|
|
|
|
|
|
-// https获取监测数据
|
|
|
-let timer: null | NodeJS.Timeout = null;
|
|
|
-function getMonitor(flag?) {
|
|
|
- if (Object.prototype.toString.call(timer) === '[object Null]') {
|
|
|
- timer = setTimeout(async () => {
|
|
|
- await getDataSource()
|
|
|
- if (timer) {
|
|
|
- timer = null;
|
|
|
- }
|
|
|
- await getMonitor();
|
|
|
- }, flag ? 0 : 1000);
|
|
|
+ async function getDataSource() {
|
|
|
+ const res = await list({ devicetype: 'pulping_auto', pagetype: 'normal' });
|
|
|
+ const dataList = res.msgTxt[0].datalist || [];
|
|
|
+ dataSource.value = dataList.filter((data) => {
|
|
|
+ const item = data.readData;
|
|
|
+ Object.assign(data, item);
|
|
|
+ return item;
|
|
|
+ });
|
|
|
}
|
|
|
-};
|
|
|
-
|
|
|
-async function getDataSource() {
|
|
|
- const res = await list({ devicetype: 'pulping_auto', pagetype: 'normal' });
|
|
|
- const dataList = res.msgTxt[0].datalist || [];
|
|
|
- dataSource.value = dataList.filter((data) => {
|
|
|
- const item = data.readData;
|
|
|
- Object.assign(data, item);
|
|
|
- return item
|
|
|
- });
|
|
|
-
|
|
|
-}
|
|
|
|
|
|
-function handlerDevice(param: string | Object) {
|
|
|
+ function handlerDevice(param: string | Object) {}
|
|
|
+ function controlDevice(flag) {}
|
|
|
|
|
|
-}
|
|
|
-function controlDevice(flag){
|
|
|
+ onBeforeMount(() => {});
|
|
|
|
|
|
-}
|
|
|
-
|
|
|
-onBeforeMount(() => {
|
|
|
-
|
|
|
-});
|
|
|
-
|
|
|
-onMounted(() => {
|
|
|
- loading.value = true;
|
|
|
- mountedThree().then(async () => {
|
|
|
- // await setModelType('groutBase');
|
|
|
- await setModelType('bertaiBase')
|
|
|
- loading.value = false;
|
|
|
- timer = null
|
|
|
- await getMonitor(true)
|
|
|
+ onMounted(() => {
|
|
|
+ loading.value = true;
|
|
|
+ mountedThree().then(async () => {
|
|
|
+ // await setModelType('groutBase');
|
|
|
+ await setModelType('bertaiBase');
|
|
|
+ loading.value = false;
|
|
|
+ timer = null;
|
|
|
+ await getMonitor(true);
|
|
|
+ });
|
|
|
+ });
|
|
|
+ onUnmounted(() => {
|
|
|
+ destroy();
|
|
|
+ if (timer) {
|
|
|
+ clearTimeout(timer);
|
|
|
+ timer = undefined;
|
|
|
+ }
|
|
|
});
|
|
|
-});
|
|
|
-onUnmounted(() => {
|
|
|
- destroy();
|
|
|
- if (timer) {
|
|
|
- clearTimeout(timer);
|
|
|
- timer = undefined;
|
|
|
- }
|
|
|
-});
|
|
|
</script>
|
|
|
<style lang="less" scoped>
|
|
|
-@import '/@/design/vent/modal.less';
|
|
|
-@ventSpace: zxm;
|
|
|
+ @import '/@/design/vent/modal.less';
|
|
|
+ @ventSpace: zxm;
|
|
|
|
|
|
-.monitor-container {
|
|
|
- width: 100%;
|
|
|
- height: 100%;
|
|
|
- // height: 550px;
|
|
|
- // border: 1px solid #fff;
|
|
|
- margin-top: 40px;
|
|
|
- display: flex;
|
|
|
- justify-content: space-between;
|
|
|
- padding: 0 5px;
|
|
|
-
|
|
|
- .lr {
|
|
|
- width: 350px;
|
|
|
+ .monitor-container {
|
|
|
+ width: 100%;
|
|
|
height: 100%;
|
|
|
+ // height: 550px;
|
|
|
+ // border: 1px solid #fff;
|
|
|
+ margin-top: 40px;
|
|
|
display: flex;
|
|
|
- flex-direction: column;
|
|
|
- margin-top: 10px;
|
|
|
- pointer-events: auto;
|
|
|
- }
|
|
|
+ justify-content: space-between;
|
|
|
+ padding: 0 5px;
|
|
|
|
|
|
- .right-box {
|
|
|
- width: 320px;
|
|
|
- margin-top: 30px;
|
|
|
- .control-group{
|
|
|
+ .lr {
|
|
|
+ width: 350px;
|
|
|
+ height: 100%;
|
|
|
display: flex;
|
|
|
- flex-wrap: wrap;
|
|
|
- .control-item {
|
|
|
-
|
|
|
+ flex-direction: column;
|
|
|
+ margin-top: 10px;
|
|
|
+ pointer-events: auto;
|
|
|
+ }
|
|
|
+
|
|
|
+ .right-box {
|
|
|
+ width: 320px;
|
|
|
+ margin-top: 30px;
|
|
|
+ .control-group {
|
|
|
display: flex;
|
|
|
- flex-direction: column;
|
|
|
- justify-content: center;
|
|
|
- align-items: center;
|
|
|
- padding: 0 2px;
|
|
|
- .control-item-title{
|
|
|
- color: #63e0ff;
|
|
|
- position: relative;
|
|
|
- top: 5px;
|
|
|
- }
|
|
|
- .control-item-state{
|
|
|
- width: 94px;
|
|
|
- height: 47px;
|
|
|
- background: url('/@/assets/images/vent/control-switch-bg.png');
|
|
|
+ flex-wrap: wrap;
|
|
|
+ .control-item {
|
|
|
display: flex;
|
|
|
+ flex-direction: column;
|
|
|
justify-content: center;
|
|
|
align-items: center;
|
|
|
- color: #fff;
|
|
|
- }
|
|
|
-
|
|
|
- .button-box {
|
|
|
- position: relative;
|
|
|
- padding: 5px;
|
|
|
- border: 1px transparent solid;
|
|
|
- background-clip: border-box;
|
|
|
- border-radius: 5px;
|
|
|
- margin-left: 8px;
|
|
|
- }
|
|
|
+ padding: 0 2px;
|
|
|
+ .control-item-title {
|
|
|
+ color: #63e0ff;
|
|
|
+ position: relative;
|
|
|
+ top: 5px;
|
|
|
+ }
|
|
|
+ .control-item-state {
|
|
|
+ width: 94px;
|
|
|
+ height: 47px;
|
|
|
+ background: url('/@/assets/images/vent/control-switch-bg.png');
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ color: #fff;
|
|
|
+ }
|
|
|
|
|
|
- .a-button {
|
|
|
- pointer-events: auto;
|
|
|
- }
|
|
|
+ .button-box {
|
|
|
+ position: relative;
|
|
|
+ padding: 5px;
|
|
|
+ border: 1px transparent solid;
|
|
|
+ background-clip: border-box;
|
|
|
+ border-radius: 5px;
|
|
|
+ margin-left: 8px;
|
|
|
+ }
|
|
|
|
|
|
- &::v-deep .a-button--mini {
|
|
|
- padding: 6px 10px;
|
|
|
- }
|
|
|
+ .a-button {
|
|
|
+ pointer-events: auto;
|
|
|
+ }
|
|
|
|
|
|
- &::v-deep .a-button--mini.is-round {
|
|
|
- padding: 6px 10px;
|
|
|
- }
|
|
|
- }
|
|
|
+ &::v-deep .a-button--mini {
|
|
|
+ padding: 6px 10px;
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
- .control-btn-group{
|
|
|
- display: flex;
|
|
|
- flex-direction: row;
|
|
|
- justify-content: space-between;
|
|
|
- .control-left-box{
|
|
|
- display: flex;
|
|
|
- flex-direction: column;
|
|
|
- justify-content: center;
|
|
|
- align-items: center;
|
|
|
- padding: 0 20px;
|
|
|
- .btn-box{
|
|
|
- width: 100px;
|
|
|
- color: #fff;
|
|
|
- display: flex;
|
|
|
- justify-content: space-between;
|
|
|
- span{
|
|
|
- display: inline-block;
|
|
|
- padding: 2px 8px;
|
|
|
- background: #007099;
|
|
|
- border-radius: 4px;
|
|
|
- border: 1px solid rgb(125, 230, 249);
|
|
|
- cursor: pointer;
|
|
|
- &:hover{
|
|
|
- background: #005574;
|
|
|
- }
|
|
|
+ &::v-deep .a-button--mini.is-round {
|
|
|
+ padding: 6px 10px;
|
|
|
}
|
|
|
}
|
|
|
- .icon-box{
|
|
|
- width: 60px;
|
|
|
- height: 60px;
|
|
|
- border-radius: 30px;
|
|
|
- border: 2px solid #00bcdd;
|
|
|
- box-shadow: 0 0 20px #ffffff88;
|
|
|
+ }
|
|
|
+ .control-btn-group {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: row;
|
|
|
+ justify-content: space-between;
|
|
|
+ .control-left-box {
|
|
|
display: flex;
|
|
|
+ flex-direction: column;
|
|
|
justify-content: center;
|
|
|
align-items: center;
|
|
|
- margin-top: 20px;
|
|
|
-
|
|
|
- .icon{
|
|
|
- width: 18px;
|
|
|
- height: 18px;
|
|
|
- border-radius: 9px;
|
|
|
- border: 3px solid #d7f9ff;
|
|
|
- position: relative;
|
|
|
- background: #00bcdd;
|
|
|
- &::before{
|
|
|
- position: absolute;
|
|
|
- content: '';
|
|
|
- width: 2px;
|
|
|
- height: 12px;
|
|
|
- background-color: #00bcdd;
|
|
|
- left: 6px;
|
|
|
- top: -16px;
|
|
|
- }
|
|
|
- &::after{
|
|
|
- position: absolute;
|
|
|
- content: '';
|
|
|
- width: 2px;
|
|
|
- height: 12px;
|
|
|
- left: 6px;
|
|
|
- top: 17px;
|
|
|
- background-color: #00d9ff;
|
|
|
+ padding: 0 20px;
|
|
|
+ .btn-box {
|
|
|
+ width: 100px;
|
|
|
+ color: #fff;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ span {
|
|
|
+ display: inline-block;
|
|
|
+ padding: 2px 8px;
|
|
|
+ background: #007099;
|
|
|
+ border-radius: 4px;
|
|
|
+ border: 1px solid rgb(125, 230, 249);
|
|
|
+ cursor: pointer;
|
|
|
+ &:hover {
|
|
|
+ background: #005574;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- .remote-icon-box{
|
|
|
- transform: rotate(30deg);
|
|
|
- animation: iconRotate 1s linear;
|
|
|
- }
|
|
|
- .remote-icon-box1{
|
|
|
- transform: rotate(-30deg);
|
|
|
- animation: iconRotate1 1s linear;
|
|
|
- }
|
|
|
+ .icon-box {
|
|
|
+ width: 60px;
|
|
|
+ height: 60px;
|
|
|
+ border-radius: 30px;
|
|
|
+ border: 2px solid #00bcdd;
|
|
|
+ box-shadow: 0 0 20px #ffffff88;
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ margin-top: 20px;
|
|
|
|
|
|
- @keyframes iconRotate{
|
|
|
- from{
|
|
|
- transform: rotate(-30deg);
|
|
|
- }
|
|
|
- to {
|
|
|
- transform: rotate(30deg);
|
|
|
+ .icon {
|
|
|
+ width: 18px;
|
|
|
+ height: 18px;
|
|
|
+ border-radius: 9px;
|
|
|
+ border: 3px solid #d7f9ff;
|
|
|
+ position: relative;
|
|
|
+ background: #00bcdd;
|
|
|
+ &::before {
|
|
|
+ position: absolute;
|
|
|
+ content: '';
|
|
|
+ width: 2px;
|
|
|
+ height: 12px;
|
|
|
+ background-color: #00bcdd;
|
|
|
+ left: 6px;
|
|
|
+ top: -16px;
|
|
|
+ }
|
|
|
+ &::after {
|
|
|
+ position: absolute;
|
|
|
+ content: '';
|
|
|
+ width: 2px;
|
|
|
+ height: 12px;
|
|
|
+ left: 6px;
|
|
|
+ top: 17px;
|
|
|
+ background-color: #00d9ff;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- @keyframes iconRotate1{
|
|
|
- from {
|
|
|
+ .remote-icon-box {
|
|
|
transform: rotate(30deg);
|
|
|
+ animation: iconRotate 1s linear;
|
|
|
}
|
|
|
- to {
|
|
|
+ .remote-icon-box1 {
|
|
|
transform: rotate(-30deg);
|
|
|
+ animation: iconRotate1 1s linear;
|
|
|
+ }
|
|
|
+
|
|
|
+ @keyframes iconRotate {
|
|
|
+ from {
|
|
|
+ transform: rotate(-30deg);
|
|
|
+ }
|
|
|
+ to {
|
|
|
+ transform: rotate(30deg);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ @keyframes iconRotate1 {
|
|
|
+ from {
|
|
|
+ transform: rotate(30deg);
|
|
|
+ }
|
|
|
+ to {
|
|
|
+ transform: rotate(-30deg);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- }
|
|
|
- .control-right-box{
|
|
|
- width: 100px;
|
|
|
- .btn{
|
|
|
- margin-bottom: 30px;
|
|
|
+ .control-right-box {
|
|
|
+ width: 100px;
|
|
|
+ .btn {
|
|
|
+ margin-bottom: 30px;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- .parameter-btn-group{
|
|
|
- display: flex;
|
|
|
- justify-content: space-between;
|
|
|
- padding: 0 20px;
|
|
|
- margin-bottom: 10px;
|
|
|
- }
|
|
|
- .echarts-box{
|
|
|
- width: 100%;
|
|
|
- height: 332px;
|
|
|
- position: relative;
|
|
|
- &:deep(.box-container){
|
|
|
- padding: 0px !important;
|
|
|
- }
|
|
|
- .btn-group{
|
|
|
- line-height: 30px;
|
|
|
- color: #fff;
|
|
|
- text-align: center;
|
|
|
- margin-top: 3px;
|
|
|
- span{
|
|
|
- padding: 3px 5px;
|
|
|
- margin: 0 2px;
|
|
|
- border-radius: 2px;
|
|
|
- background-image: linear-gradient( #32475B, #5b95c7);
|
|
|
- border: 1px solid #32475B;
|
|
|
- cursor: pointer;
|
|
|
- }
|
|
|
- .active{
|
|
|
- background-image: linear-gradient( #2E4659, #37A7B4);
|
|
|
- border-top: 1px solid #3DF6FF;
|
|
|
- }
|
|
|
+ .parameter-btn-group {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ padding: 0 20px;
|
|
|
+ margin-bottom: 10px;
|
|
|
}
|
|
|
- .echarts-container{
|
|
|
+ .echarts-box {
|
|
|
width: 100%;
|
|
|
- height: 240px;
|
|
|
- overflow: hidden;
|
|
|
+ height: 332px;
|
|
|
position: relative;
|
|
|
- .echarts-group{
|
|
|
- display: flex;
|
|
|
- flex-direction: row;
|
|
|
- position: absolute;
|
|
|
- left: v-bind(left);
|
|
|
- .echarts-item{
|
|
|
- width: 305px;
|
|
|
+ &:deep(.box-container) {
|
|
|
+ padding: 0px !important;
|
|
|
+ }
|
|
|
+ .btn-group {
|
|
|
+ line-height: 30px;
|
|
|
+ color: #fff;
|
|
|
+ text-align: center;
|
|
|
+ margin-top: 3px;
|
|
|
+ span {
|
|
|
+ padding: 3px 5px;
|
|
|
+ margin: 0 2px;
|
|
|
+ border-radius: 2px;
|
|
|
+ background-image: linear-gradient(#32475b, #5b95c7);
|
|
|
+ border: 1px solid #32475b;
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+ .active {
|
|
|
+ background-image: linear-gradient(#2e4659, #37a7b4);
|
|
|
+ border-top: 1px solid #3df6ff;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .echarts-container {
|
|
|
+ width: 100%;
|
|
|
+ height: 240px;
|
|
|
+ overflow: hidden;
|
|
|
+ position: relative;
|
|
|
+ .echarts-group {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: row;
|
|
|
+ position: absolute;
|
|
|
+ left: v-bind(left);
|
|
|
+ .echarts-item {
|
|
|
+ width: 305px;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
-
|
|
|
- }
|
|
|
|
|
|
- .left-box {
|
|
|
- margin-top: 30px;
|
|
|
- .monitor-item{
|
|
|
- display: flex;
|
|
|
- color: #fff;
|
|
|
- justify-content: space-between;
|
|
|
- background-image: linear-gradient(to left, #3df6ff10, #3df6ff00);
|
|
|
- margin: 10px 0;
|
|
|
-
|
|
|
- .item-title{
|
|
|
- width: 200px;
|
|
|
- margin-left: 10px;
|
|
|
- }
|
|
|
- .item-val{
|
|
|
- width: 80px;
|
|
|
- color: #00eefffe;
|
|
|
- }
|
|
|
- .item-unit{
|
|
|
- width: 80px;
|
|
|
+ .left-box {
|
|
|
+ margin-top: 30px;
|
|
|
+ .monitor-item {
|
|
|
+ display: flex;
|
|
|
+ color: #fff;
|
|
|
+ justify-content: space-between;
|
|
|
+ background-image: linear-gradient(to left, #3df6ff10, #3df6ff00);
|
|
|
+ margin: 10px 0;
|
|
|
+
|
|
|
+ .item-title {
|
|
|
+ width: 200px;
|
|
|
+ margin-left: 10px;
|
|
|
+ }
|
|
|
+ .item-val {
|
|
|
+ width: 80px;
|
|
|
+ color: #00eefffe;
|
|
|
+ }
|
|
|
+ .item-unit {
|
|
|
+ width: 80px;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- }
|
|
|
|
|
|
- .item-box{
|
|
|
- margin-bottom: 15px;
|
|
|
+ .item-box {
|
|
|
+ margin-bottom: 15px;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
-}
|
|
|
+ :deep(.@{ventSpace}-tabs-tabpane-active) {
|
|
|
+ overflow: auto;
|
|
|
+ }
|
|
|
|
|
|
-:deep(.@{ventSpace}-tabs-tabpane-active) {
|
|
|
- overflow: auto;
|
|
|
-}
|
|
|
+ .input-box {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ padding-left: 10px;
|
|
|
|
|
|
-.input-box {
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- padding-left: 10px;
|
|
|
+ .input-title {
|
|
|
+ color: #73e8fe;
|
|
|
+ width: auto;
|
|
|
+ }
|
|
|
|
|
|
- .input-title {
|
|
|
- color: #73e8fe;
|
|
|
- width: auto;
|
|
|
- }
|
|
|
+ .@{ventSpace}-input-number {
|
|
|
+ border-color: #ffffff88 !important;
|
|
|
+ }
|
|
|
|
|
|
- .@{ventSpace}-input-number {
|
|
|
- border-color: #ffffff88 !important;
|
|
|
+ margin-right: 10px;
|
|
|
}
|
|
|
-
|
|
|
- margin-right: 10px;
|
|
|
-}
|
|
|
</style>
|