|
@@ -9,629 +9,932 @@
|
|
<div class="value">{{ selectData[item.code] ? selectData[item.code] : '-' }}</div>
|
|
<div class="value">{{ selectData[item.code] ? selectData[item.code] : '-' }}</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
- </fourBorderBg>
|
|
|
|
- </div> -->
|
|
|
|
|
|
+</fourBorderBg>
|
|
|
|
+</div> -->
|
|
</div>
|
|
</div>
|
|
<!-- 布尔台新瓦斯泵模型上的数据 -->
|
|
<!-- 布尔台新瓦斯泵模型上的数据 -->
|
|
<div class="elementContent" style="position: absolute; display: none">
|
|
<div class="elementContent" style="position: absolute; display: none">
|
|
<div v-for="(tag, index) in modelMonitorTags" :key="index" :id="tag.domId" class="modal-monitor-box">
|
|
<div v-for="(tag, index) in modelMonitorTags" :key="index" :id="tag.domId" class="modal-monitor-box">
|
|
<div class="title">{{ tag.title }}</div>
|
|
<div class="title">{{ tag.title }}</div>
|
|
- <div
|
|
|
|
- v-if="tag.type == 'sign'"
|
|
|
|
- class="signal-round"
|
|
|
|
- :class="{ 'signal-round-gry': selectData[tag.code] != 1, 'signal-round-run': selectData[tag.code] == 1 }"
|
|
|
|
- ></div>
|
|
|
|
|
|
+ <div v-if="tag.type == 'sign'" class="signal-round"
|
|
|
|
+ :class="{ 'signal-round-gry': selectData[tag.code] != 1, 'signal-round-run': selectData[tag.code] == 1 }">
|
|
|
|
+ </div>
|
|
<div v-else class="value">{{ selectData[tag.code] }}</div>
|
|
<div v-else class="value">{{ selectData[tag.code] }}</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div v-if="selectData['netStatus'] == 0" class="device-state">网络断开</div>
|
|
<div v-if="selectData['netStatus'] == 0" class="device-state">网络断开</div>
|
|
- <div class="lr left-box">
|
|
|
|
- <div class="left-container">
|
|
|
|
- <div class="monitor-box">
|
|
|
|
- <ventBox1>
|
|
|
|
- <template #title>
|
|
|
|
- <div>瓦斯泵</div>
|
|
|
|
- </template>
|
|
|
|
- <template #container>
|
|
|
|
- <div v-for="key in 2" :key="key">
|
|
|
|
- <div class="parameter-title group-parameter-title">
|
|
|
|
- <SvgIcon class="icon" size="14" name="pulp-title" /><span>{{ key }}#瓦斯泵磁力启动器</span>
|
|
|
|
- </div>
|
|
|
|
- <div class="input-box">
|
|
|
|
- <div v-for="(item, index) in pumpMonitorData" class="input-item" :key="index">
|
|
|
|
- <div class="title">{{ item.title }}:</div>
|
|
|
|
- <template v-if="item.type !== 'sign' && item.type !== 'warning'">
|
|
|
|
- <div class="value">{{
|
|
|
|
- selectData && selectData[item.code.replace('Starter', `Starter${key + 4}`)]
|
|
|
|
- ? formatNum(selectData[item.code.replace('Starter', `Starter${key + 4}`)], 1)
|
|
|
|
- : '-'
|
|
|
|
- }}</div>
|
|
|
|
- </template>
|
|
|
|
- <template v-else>
|
|
|
|
- <div class="value">
|
|
|
|
- <span
|
|
|
|
- :class="{
|
|
|
|
- 'signal-round': true,
|
|
|
|
- 'signal-round-run': item.type === 'sign' && selectData[item.code.replace('Starter', `Starter${key + 4}`)] == '1',
|
|
|
|
- 'signal-round-gry': selectData[item.code.replace('Starter', `Starter${key + 4}`)] == '0',
|
|
|
|
- 'signal-round-warning': item.type === 'warning' && selectData[item.code.replace('Starter', `Starter${key + 4}`)] == '1',
|
|
|
|
- }"
|
|
|
|
- ></span>
|
|
|
|
- </div>
|
|
|
|
- </template>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- </template>
|
|
|
|
- </ventBox1>
|
|
|
|
- <ventBox1 class="vent-margin-t-10">
|
|
|
|
- <template #title>
|
|
|
|
- <div>注水泵</div>
|
|
|
|
- </template>
|
|
|
|
- <template #container>
|
|
|
|
- <div v-for="key in 2" :key="key">
|
|
|
|
- <div class="parameter-title group-parameter-title">
|
|
|
|
- <SvgIcon class="icon" size="14" name="pulp-title" /><span>{{ key }}#注水泵</span>
|
|
|
|
- </div>
|
|
|
|
- <div class="input-box">
|
|
|
|
- <div v-for="(item, index) in waterPumpData" class="input-item" :key="index">
|
|
|
|
- <div class="title">{{ item.title }}:</div>
|
|
|
|
- <template v-if="item.type !== 'sign'">
|
|
|
|
- <div class="value">{{
|
|
|
|
- selectData && selectData[item.code.replace('WaterfloodPump', `WaterfloodPump${key}`)]
|
|
|
|
- ? formatNum(selectData[item.code.replace('WaterfloodPump', `WaterfloodPump${key}`)], 1)
|
|
|
|
- : '-'
|
|
|
|
- }}</div>
|
|
|
|
- </template>
|
|
|
|
- <template v-else>
|
|
|
|
- <div class="value">
|
|
|
|
- <span
|
|
|
|
- :class="{
|
|
|
|
- 'signal-round': true,
|
|
|
|
- 'signal-round-run': selectData[item.code.replace('WaterfloodPump', `WaterfloodPump${key}`)],
|
|
|
|
- 'signal-round-gry': selectData[item.code.replace('WaterfloodPump', `WaterfloodPump${key}`)] == '0',
|
|
|
|
- }"
|
|
|
|
- ></span>
|
|
|
|
- </div>
|
|
|
|
- </template>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- </template>
|
|
|
|
- </ventBox1>
|
|
|
|
- <ventBox1 class="vent-margin-t-10">
|
|
|
|
- <template #title>
|
|
|
|
- <div>排水泵</div>
|
|
|
|
- </template>
|
|
|
|
- <template #container>
|
|
|
|
- <div v-for="key in 2" :key="key">
|
|
|
|
- <div class="parameter-title group-parameter-title">
|
|
|
|
- <SvgIcon class="icon" size="14" name="pulp-title" /><span>{{ key }}#排水泵</span>
|
|
|
|
- </div>
|
|
|
|
- <div class="input-box">
|
|
|
|
- <div v-for="(item, index) in dewateringPumpData" class="input-item" :key="index">
|
|
|
|
- <div class="title">{{ item.title }}:</div>
|
|
|
|
- <template v-if="item.type !== 'sign'">
|
|
|
|
- <div class="value">{{
|
|
|
|
- selectData && selectData[item.code.replace('DewateringPump', `DewateringPump${key}`)]
|
|
|
|
- ? formatNum(selectData[item.code.replace('DewateringPump', `DewateringPump${key}`)], 1)
|
|
|
|
- : '-'
|
|
|
|
- }}</div>
|
|
|
|
- </template>
|
|
|
|
- <template v-else>
|
|
|
|
- <div class="value">
|
|
|
|
- <span
|
|
|
|
- :class="{
|
|
|
|
- 'signal-round': true,
|
|
|
|
- 'signal-round-run': selectData[item.code.replace('DewateringPump', `DewateringPump${key}`)],
|
|
|
|
- 'signal-round-gry': selectData[item.code.replace('DewateringPump', `DewateringPump${key}`)] == '0',
|
|
|
|
- }"
|
|
|
|
- ></span>
|
|
|
|
- </div>
|
|
|
|
- </template>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- </template>
|
|
|
|
- </ventBox1>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- <div class="lr right-box">
|
|
|
|
- <div class="item-box sensor-container">
|
|
|
|
- <ventBox1 class="vent-margin-t-10">
|
|
|
|
- <template #title>
|
|
|
|
- <div>泵站远程集中控制</div>
|
|
|
|
- </template>
|
|
|
|
- <template #container>
|
|
|
|
- <div class="top-btn">
|
|
|
|
- <div class="btn-group">
|
|
|
|
- <a-button class="btn-item" type="primary" @click="handlerFn('zfw')">总复位</a-button>
|
|
|
|
- <a-button class="btn-item" type="default" disabled @click="handlerFn('change')">一键切换</a-button>
|
|
|
|
- </div>
|
|
|
|
- <div class="btn-group">
|
|
|
|
- <a-button style="width: calc(100% - 16px); padding: 0 8px" type="primary" @click="openModal">瓦斯泵控制</a-button>
|
|
|
|
- </div>
|
|
|
|
- <div>
|
|
|
|
- <div class="control-item">
|
|
|
|
- <div class="control-title">控制模式:</div>
|
|
|
|
- <div class="control-container">
|
|
|
|
- <a-radio-group v-model:value="selectData['ykjdqh']">
|
|
|
|
- <a-radio :value="'0'">就地</a-radio>
|
|
|
|
- <a-radio :value="'1'">远程</a-radio>
|
|
|
|
- </a-radio-group>
|
|
|
|
- <div class="btn-box">
|
|
|
|
- <div class="btn btn1" @click="changeCtr(0)">就地</div>
|
|
|
|
- <div class="btn btn1" @click="changeCtr(1)">远程</div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- <div class="control-item">
|
|
|
|
- <div class="control-title">检修模式:</div>
|
|
|
|
- <div class="control-container">
|
|
|
|
- <a-radio-group v-model:value="selectData['jxmsqh']">
|
|
|
|
- <a-radio :value="'0'">关闭</a-radio>
|
|
|
|
- <a-radio :value="'1'">开启</a-radio>
|
|
|
|
- </a-radio-group>
|
|
|
|
- <div class="btn-box">
|
|
|
|
- <div class="btn btn1" @click="changeMode(0)">关闭</div>
|
|
|
|
- <div class="btn btn1" @click="changeMode(1)">开启</div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- </template>
|
|
|
|
- </ventBox1>
|
|
|
|
- <ventBox1 class="vent-margin-t-10">
|
|
|
|
- <template #title>
|
|
|
|
- <div>泵站监测详情</div>
|
|
|
|
- </template>
|
|
|
|
- <template #container>
|
|
|
|
- <ListItem
|
|
|
|
- v-for="(item, index) in modelMonitor"
|
|
|
|
- :key="index"
|
|
|
|
- class="w-100% mb-5px"
|
|
|
|
- :value="selectData[item.code]"
|
|
|
|
- :label="item.title"
|
|
|
|
- label-width="250px"
|
|
|
|
- />
|
|
|
|
- </template>
|
|
|
|
- </ventBox1>
|
|
|
|
- </div>
|
|
|
|
- <!-- <div class="item-box" >
|
|
|
|
- <LivePlayer id="fm-player1" style="height: 250px;" ref="player1" :videoUrl="flvURL1()" muted live loading controls />
|
|
|
|
- </div> -->
|
|
|
|
- </div>
|
|
|
|
|
|
+
|
|
|
|
+ <!-- 可配置模块 -->
|
|
|
|
+ <ModuleCommon v-for="cfg in configs" :key="cfg.deviceType" :show-style="cfg.showStyle" :module-data="cfg.moduleData"
|
|
|
|
+ :module-name="cfg.moduleName" :device-type="cfg.deviceType" :data="selectData" :visible="true" />
|
|
|
|
+
|
|
|
|
+ <div class="lr left-box"></div>
|
|
|
|
+ <div class="lr right-box"></div>
|
|
<div ref="playerRef" class="player-box"></div>
|
|
<div ref="playerRef" class="player-box"></div>
|
|
</div>
|
|
</div>
|
|
- <DetailModal @register="register" :device-type="deviceType" :device-id="deviceId" />
|
|
|
|
- <PasswordModal
|
|
|
|
- :modal-is-show="passwordModalIsShow"
|
|
|
|
- modal-title="密码检验"
|
|
|
|
- :modal-type="handlerType"
|
|
|
|
- @handle-ok="handleOK"
|
|
|
|
- @handle-cancel="handleCancel"
|
|
|
|
- />
|
|
|
|
|
|
+ <PasswordModal :modal-is-show="passwordModalIsShow" modal-title="密码检验" :modal-type="handlerType" @handle-ok="handleOK"
|
|
|
|
+ @handle-cancel="handleCancel" />
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
- import { ref, onMounted, onUnmounted, reactive, defineProps, watch, inject, nextTick, onBeforeUnmount } from 'vue';
|
|
|
|
- import ventBox1 from '/@/components/vent/ventBox1.vue';
|
|
|
|
- import { setModelType, playAnimate } from '../gasPump.threejs';
|
|
|
|
- import ListItem from '@/views/vent/gas/components/list/listItem.vue';
|
|
|
|
- import {
|
|
|
|
- stateWarningHeader,
|
|
|
|
- valveWarningState,
|
|
|
|
- pumpMonitorData,
|
|
|
|
- waterPumpData,
|
|
|
|
- dewateringPumpData,
|
|
|
|
- modelMonitor,
|
|
|
|
- getModelMonitorTags,
|
|
|
|
- valveCtrlType,
|
|
|
|
- } from '../gasPump.data';
|
|
|
|
- import { list } from '../gasPump.api';
|
|
|
|
- import { SvgIcon } from '/@/components/Icon';
|
|
|
|
- import { formatNum } from '/@/utils/ventutil';
|
|
|
|
- import DetailModal from './DetailModal.vue';
|
|
|
|
- import { useModal } from '/@/components/Modal';
|
|
|
|
- import { deviceControlApi } from '/@/api/vent/index';
|
|
|
|
- import PasswordModal from '../../comment/components/PasswordModal.vue';
|
|
|
|
- import { message } from 'ant-design-vue';
|
|
|
|
- import fourBorderBg from '/@/components/vent/fourBorderBg.vue';
|
|
|
|
- import { useCamera } from '/@/hooks/system/useCamera';
|
|
|
|
-
|
|
|
|
- const globalConfig = inject('globalConfig');
|
|
|
|
-
|
|
|
|
- const props = defineProps({
|
|
|
|
- deviceId: {
|
|
|
|
- type: String,
|
|
|
|
- require: true,
|
|
|
|
- },
|
|
|
|
- deviceType: {
|
|
|
|
- type: String,
|
|
|
|
- require: true,
|
|
|
|
- },
|
|
|
|
- });
|
|
|
|
- const [register, { openModal }] = useModal();
|
|
|
|
- const modelMonitorTags = getModelMonitorTags();
|
|
|
|
- const loading = ref(false);
|
|
|
|
- const tabActiveKey = ref(1);
|
|
|
|
- const passwordModalIsShow = ref(false);
|
|
|
|
- const handlerType = ref('');
|
|
|
|
- const playerRef = ref();
|
|
|
|
-
|
|
|
|
- // 监测数据
|
|
|
|
- const selectData = ref({
|
|
|
|
- pump1: false,
|
|
|
|
- pump2: false,
|
|
|
|
- pump3: false,
|
|
|
|
- pump4: false,
|
|
|
|
- waterPump1: false,
|
|
|
|
- waterPump2: false,
|
|
|
|
- waterPump3: false,
|
|
|
|
- waterPump4: false,
|
|
|
|
- inValve1: false,
|
|
|
|
- outValve1: false,
|
|
|
|
- inValve2: false,
|
|
|
|
- outValve2: false,
|
|
|
|
- inValve3: false,
|
|
|
|
- outValve3: false,
|
|
|
|
- inValve4: false,
|
|
|
|
- outValve4: false,
|
|
|
|
- jxmsqh: '1',
|
|
|
|
- ykjdqh: '1',
|
|
|
|
- FlowSensor_InputFlux: '-',
|
|
|
|
- deviceType: '',
|
|
|
|
- });
|
|
|
|
-
|
|
|
|
- const { getCamera, removeCamera } = useCamera();
|
|
|
|
-
|
|
|
|
- // https获取监测数据
|
|
|
|
- let timer: null | NodeJS.Timeout = null;
|
|
|
|
- function getMonitor(flag?) {
|
|
|
|
- if (Object.prototype.toString.call(timer) === '[object Null]') {
|
|
|
|
- return new Promise((resolve) => {
|
|
|
|
- timer = setTimeout(
|
|
|
|
- async () => {
|
|
|
|
- if (props.deviceId) {
|
|
|
|
- const data = await getDataSource(props.deviceId);
|
|
|
|
- selectData.value = data;
|
|
|
|
- playAnimate(data);
|
|
|
|
- // Object.assign(selectData, data);
|
|
|
|
- }
|
|
|
|
- if (timer) {
|
|
|
|
- timer = null;
|
|
|
|
- }
|
|
|
|
- resolve(null);
|
|
|
|
- await getMonitor();
|
|
|
|
- loading.value = false;
|
|
|
|
- },
|
|
|
|
- flag ? 0 : 1000
|
|
|
|
- );
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
|
|
+import { ref, onMounted, onUnmounted, reactive, defineProps, watch, inject, nextTick, onBeforeUnmount, computed } from 'vue';
|
|
|
|
+// import ventBox1 from '/@/components/vent/ventBox1.vue';
|
|
|
|
+import { setModelType, playAnimate } from '../gasPump.threejs';
|
|
|
|
+// import ListItem from '@/views/vent/gas/components/list/listItem.vue';
|
|
|
|
+import {
|
|
|
|
+ getModelMonitorTags,
|
|
|
|
+} from '../gasPump.data';
|
|
|
|
+import { list } from '../gasPump.api';
|
|
|
|
+import { deviceControlApi } from '/@/api/vent/index';
|
|
|
|
+import PasswordModal from '../../comment/components/PasswordModal.vue';
|
|
|
|
+import { message } from 'ant-design-vue';
|
|
|
|
+// import fourBorderBg from '/@/components/vent/fourBorderBg.vue';
|
|
|
|
+// import { useCamera } from '/@/hooks/system/useCamera';
|
|
|
|
+import { useInitConfigs } from '../../../home/configurable/hooks/useInit';
|
|
|
|
+ import ModuleCommon from '../../../home/configurable/components/ModuleCommon.vue';
|
|
|
|
+ import { set } from 'lodash-es';
|
|
|
|
+
|
|
|
|
+const globalConfig = inject<any>('globalConfig');
|
|
|
|
+
|
|
|
|
+const props = defineProps({
|
|
|
|
+ deviceId: {
|
|
|
|
+ type: String,
|
|
|
|
+ require: true,
|
|
|
|
+ },
|
|
|
|
+ deviceType: {
|
|
|
|
+ type: String,
|
|
|
|
+ require: true,
|
|
|
|
+ },
|
|
|
|
+});
|
|
|
|
+
|
|
|
|
+const { configs: rawConfigs, fetchConfigs } = useInitConfigs();
|
|
|
|
+const configs = computed(() => {
|
|
|
|
+ return rawConfigs.value.filter((c) => c.deviceType == props.deviceId);
|
|
|
|
+});
|
|
|
|
+
|
|
|
|
+// const [register, { openModal }] = useModal();
|
|
|
|
+const modelMonitorTags = getModelMonitorTags();
|
|
|
|
+const loading = ref(false);
|
|
|
|
+const passwordModalIsShow = ref(false);
|
|
|
|
+const handlerType = ref('');
|
|
|
|
+const playerRef = ref();
|
|
|
|
+
|
|
|
|
+// 监测数据
|
|
|
|
+const selectData = ref({});
|
|
|
|
+
|
|
|
|
+// const { getCamera, removeCamera } = useCamera();
|
|
|
|
+
|
|
|
|
+// https获取监测数据
|
|
|
|
+let timer: null | NodeJS.Timeout = null;
|
|
|
|
+function getMonitor(flag?) {
|
|
|
|
+ if (Object.prototype.toString.call(timer) === '[object Null]') {
|
|
|
|
+ return new Promise((resolve) => {
|
|
|
|
+ timer = setTimeout(
|
|
|
|
+ async () => {
|
|
|
|
+ if (props.deviceId) {
|
|
|
|
+ const data = await getDataSource();
|
|
|
|
+ selectData.value = data;
|
|
|
|
+ playAnimate(data);
|
|
|
|
+ // Object.assign(selectData, data);
|
|
|
|
+ }
|
|
|
|
+ if (timer) {
|
|
|
|
+ timer = null;
|
|
|
|
+ }
|
|
|
|
+ resolve(null);
|
|
|
|
+ await getMonitor();
|
|
|
|
+ loading.value = false;
|
|
|
|
+ },
|
|
|
|
+ flag ? 0 : 1000
|
|
|
|
+ );
|
|
|
|
+ });
|
|
}
|
|
}
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+async function getDataSource() {
|
|
|
|
+ const res = await list({
|
|
|
|
+ devicetype: 'gasdrainage',
|
|
|
|
+ pagetype: 'normal',
|
|
|
|
+ });
|
|
|
|
+ const datalist = res.msgTxt[0]['datalist'];
|
|
|
|
|
|
- async function getDataSource(systemID) {
|
|
|
|
- const res = await list({ devicetype: props.deviceType, ids: systemID });
|
|
|
|
- const result = res.msgTxt[0]['datalist'][0];
|
|
|
|
- Object.assign(result, result['readData']);
|
|
|
|
|
|
+ const result = datalist.reduce((obj, e) => {
|
|
|
|
+ return set(obj, e.readData.id, e);
|
|
|
|
+ }, {});
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
- function handler(passWord, paramcode) {
|
|
|
|
- let value = '';
|
|
|
|
- if (paramcode == 'ykjdqh') {
|
|
|
|
- value = selectData.value['ykjdqh'] == '1' ? '2' : '1';
|
|
|
|
- }
|
|
|
|
- if (paramcode == 'jxmsqh') {
|
|
|
|
- value = selectData.value['jxmsqh'] == '1' ? '2' : '1';
|
|
|
|
- }
|
|
|
|
- const data = {
|
|
|
|
- deviceid: selectData.value['deviceID'],
|
|
|
|
- devicetype: selectData.value['deviceType'],
|
|
|
|
- paramcode: paramcode,
|
|
|
|
- password: passWord,
|
|
|
|
- value: value,
|
|
|
|
- };
|
|
|
|
- deviceControlApi(data)
|
|
|
|
- .then((res) => {
|
|
|
|
- if (globalConfig.History_Type == 'remote') {
|
|
|
|
- message.success('指令已下发至生产管控平台成功!');
|
|
|
|
- } else {
|
|
|
|
- message.success('指令已下发成功!');
|
|
|
|
- }
|
|
|
|
- })
|
|
|
|
- .catch((err) => {
|
|
|
|
- message.success('控制异常');
|
|
|
|
- });
|
|
|
|
|
|
+function handler(passWord, paramcode) {
|
|
|
|
+ let value = '';
|
|
|
|
+ if (paramcode == 'ykjdqh') {
|
|
|
|
+ value = selectData.value['ykjdqh'] == '1' ? '2' : '1';
|
|
}
|
|
}
|
|
-
|
|
|
|
- function changeCtr(e) {
|
|
|
|
- if (e == 1) {
|
|
|
|
- // 就地
|
|
|
|
- handlerType.value = 'jxmsqh';
|
|
|
|
- } else if (e == 2) {
|
|
|
|
- // 远程
|
|
|
|
- handlerType.value = 'jxmsqh';
|
|
|
|
- }
|
|
|
|
- passwordModalIsShow.value = true;
|
|
|
|
|
|
+ if (paramcode == 'jxmsqh') {
|
|
|
|
+ value = selectData.value['jxmsqh'] == '1' ? '2' : '1';
|
|
}
|
|
}
|
|
|
|
+ const data = {
|
|
|
|
+ deviceid: selectData.value['deviceID'],
|
|
|
|
+ devicetype: selectData.value['deviceType'],
|
|
|
|
+ paramcode: paramcode,
|
|
|
|
+ password: passWord,
|
|
|
|
+ value: value,
|
|
|
|
+ };
|
|
|
|
+ deviceControlApi(data)
|
|
|
|
+ .then((res) => {
|
|
|
|
+ if (globalConfig.History_Type == 'remote') {
|
|
|
|
+ message.success('指令已下发至生产管控平台成功!');
|
|
|
|
+ } else {
|
|
|
|
+ message.success('指令已下发成功!');
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ .catch((err) => {
|
|
|
|
+ message.success('控制异常');
|
|
|
|
+ });
|
|
|
|
+}
|
|
|
|
|
|
- function changeMode(e) {
|
|
|
|
- if (e == 1) {
|
|
|
|
- // 检修开
|
|
|
|
- handlerType.value = 'ykjdqh';
|
|
|
|
- } else if (e == 2) {
|
|
|
|
- // 检修关
|
|
|
|
- handlerType.value = 'ykjdqh';
|
|
|
|
- }
|
|
|
|
- passwordModalIsShow.value = true;
|
|
|
|
- }
|
|
|
|
|
|
+// function changeCtr(e) {
|
|
|
|
+// if (e == 1) {
|
|
|
|
+// // 就地
|
|
|
|
+// handlerType.value = 'jxmsqh';
|
|
|
|
+// } else if (e == 2) {
|
|
|
|
+// // 远程
|
|
|
|
+// handlerType.value = 'jxmsqh';
|
|
|
|
+// }
|
|
|
|
+// passwordModalIsShow.value = true;
|
|
|
|
+// }
|
|
|
|
|
|
- function handlerFn(paramcode) {
|
|
|
|
- handlerType.value = paramcode;
|
|
|
|
- passwordModalIsShow.value = true;
|
|
|
|
- }
|
|
|
|
|
|
+// function changeMode(e) {
|
|
|
|
+// if (e == 1) {
|
|
|
|
+// // 检修开
|
|
|
|
+// handlerType.value = 'ykjdqh';
|
|
|
|
+// } else if (e == 2) {
|
|
|
|
+// // 检修关
|
|
|
|
+// handlerType.value = 'ykjdqh';
|
|
|
|
+// }
|
|
|
|
+// passwordModalIsShow.value = true;
|
|
|
|
+// }
|
|
|
|
|
|
- function handleOK(passWord, handlerState) {
|
|
|
|
- handler(passWord, handlerState);
|
|
|
|
- passwordModalIsShow.value = false;
|
|
|
|
- handlerType.value = '';
|
|
|
|
- }
|
|
|
|
|
|
+// function handlerFn(paramcode) {
|
|
|
|
+// handlerType.value = paramcode;
|
|
|
|
+// passwordModalIsShow.value = true;
|
|
|
|
+// }
|
|
|
|
+
|
|
|
|
+function handleOK(passWord, handlerState) {
|
|
|
|
+ handler(passWord, handlerState);
|
|
|
|
+ passwordModalIsShow.value = false;
|
|
|
|
+ handlerType.value = '';
|
|
|
|
+}
|
|
|
|
|
|
- function handleCancel() {
|
|
|
|
- passwordModalIsShow.value = false;
|
|
|
|
- handlerType.value = '';
|
|
|
|
|
|
+function handleCancel() {
|
|
|
|
+ passwordModalIsShow.value = false;
|
|
|
|
+ handlerType.value = '';
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 喷粉操作
|
|
|
|
+// function handlerDevice(code, data) { }
|
|
|
|
+
|
|
|
|
+watch(
|
|
|
|
+ () => props.deviceType,
|
|
|
|
+ () => {
|
|
|
|
+ // removeCamera();
|
|
|
|
+ nextTick(async () => {
|
|
|
|
+ if (props.deviceType == 'pump_over') {
|
|
|
|
+ setModelType('gasPump');
|
|
|
|
+ } else if (props.deviceType?.startsWith('pump_under') || props.deviceType == 'pump_n12m2pq') {
|
|
|
|
+ setModelType('gasPumpUnder');
|
|
|
|
+ }
|
|
|
|
+ });
|
|
}
|
|
}
|
|
|
|
+);
|
|
|
|
+// watch(
|
|
|
|
+// () => props.deviceId,
|
|
|
|
+// async (deviceID) => {
|
|
|
|
+// removeCamera();
|
|
|
|
+// if (deviceID) await getCamera(deviceID, playerRef.value);
|
|
|
|
+// }
|
|
|
|
+// );
|
|
|
|
|
|
- // 喷粉操作
|
|
|
|
- function handlerDevice(code, data) {}
|
|
|
|
-
|
|
|
|
- watch(
|
|
|
|
- () => props.deviceType,
|
|
|
|
- () => {
|
|
|
|
- removeCamera();
|
|
|
|
- nextTick(async () => {
|
|
|
|
- if (props.deviceType == 'pump_over') {
|
|
|
|
- setModelType('gasPump');
|
|
|
|
- } else if (props.deviceType?.startsWith('pump_under') || props.deviceType == 'pump_n12m2pq') {
|
|
|
|
- setModelType('gasPumpUnder');
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
- );
|
|
|
|
- watch(
|
|
|
|
- () => props.deviceId,
|
|
|
|
- async (deviceID) => {
|
|
|
|
- removeCamera();
|
|
|
|
- if (deviceID) await getCamera(deviceID, playerRef.value);
|
|
|
|
- }
|
|
|
|
- );
|
|
|
|
|
|
+onMounted(async () => {
|
|
|
|
+ timer = null;
|
|
|
|
+ await getMonitor(true);
|
|
|
|
+ fetchConfigs('gasPumpMonitor');
|
|
|
|
+ // if (selectData && selectData['deviceID']) await getCamera(selectData['deviceID'], playerRef.value);
|
|
|
|
+});
|
|
|
|
|
|
- onMounted(async () => {
|
|
|
|
|
|
+// onBeforeUnmount(() => {
|
|
|
|
+// removeCamera();
|
|
|
|
+// });
|
|
|
|
+
|
|
|
|
+onUnmounted(() => {
|
|
|
|
+ // removeCamera();
|
|
|
|
+ if (timer) {
|
|
|
|
+ clearTimeout(timer);
|
|
timer = null;
|
|
timer = null;
|
|
- await getMonitor(true);
|
|
|
|
- // if (selectData && selectData['deviceID']) await getCamera(selectData['deviceID'], playerRef.value);
|
|
|
|
- });
|
|
|
|
-
|
|
|
|
- onBeforeUnmount(() => {
|
|
|
|
- removeCamera();
|
|
|
|
- });
|
|
|
|
-
|
|
|
|
- onUnmounted(() => {
|
|
|
|
- removeCamera();
|
|
|
|
- if (timer) {
|
|
|
|
- clearTimeout(timer);
|
|
|
|
- timer = undefined;
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
|
|
+ }
|
|
|
|
+});
|
|
|
|
+ // const rawConfigs = ref<Config[]>([
|
|
|
|
+ // {
|
|
|
|
+ // deviceType: '1709773229143920641',
|
|
|
|
+ // moduleName: '瓦斯泵',
|
|
|
|
+ // pageType: 'gasPumpMonitor',
|
|
|
|
+ // moduleData: {
|
|
|
|
+ // header: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // readFrom: '',
|
|
|
|
+ // selector: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // value: '',
|
|
|
|
+ // },
|
|
|
|
+ // slot: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // value: '',
|
|
|
|
+ // },
|
|
|
|
+ // },
|
|
|
|
+ // background: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // type: 'image',
|
|
|
|
+ // link: '',
|
|
|
|
+ // },
|
|
|
|
+ // layout: {
|
|
|
|
+ // direction: 'column',
|
|
|
|
+ // items: [
|
|
|
|
+ // {
|
|
|
|
+ // name: 'list',
|
|
|
|
+ // basis: '100%',
|
|
|
|
+ // },
|
|
|
|
+ // ],
|
|
|
|
+ // },
|
|
|
|
+ // complex_list: [],
|
|
|
|
+ // chart: [],
|
|
|
|
+ // table: [],
|
|
|
|
+ // gallery: [],
|
|
|
|
+ // list: [
|
|
|
|
+ // {
|
|
|
|
+ // type: 'K',
|
|
|
|
+ // readFrom: '',
|
|
|
|
+ // items: [
|
|
|
|
+ // {
|
|
|
|
+ // label: '701001传感器的值',
|
|
|
|
+ // value: '${701001.readData.value}',
|
|
|
|
+ // color: 'blue',
|
|
|
|
+ // },
|
|
|
|
+ // ],
|
|
|
|
+ // },
|
|
|
|
+ // ],
|
|
|
|
+ // gallery_list: [],
|
|
|
|
+ // preset: [],
|
|
|
|
+ // to: '',
|
|
|
|
+ // },
|
|
|
|
+ // showStyle: {
|
|
|
|
+ // size: 'width:348px;height:300px;',
|
|
|
|
+ // version: '原版',
|
|
|
|
+ // position: 'top:30px;left:10px;',
|
|
|
|
+ // },
|
|
|
|
+ // },
|
|
|
|
+ // {
|
|
|
|
+ // deviceType: '1709773229143920641',
|
|
|
|
+ // moduleName: '注水泵',
|
|
|
|
+ // pageType: 'gasPumpMonitor',
|
|
|
|
+ // moduleData: {
|
|
|
|
+ // header: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // readFrom: '',
|
|
|
|
+ // selector: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // value: '',
|
|
|
|
+ // },
|
|
|
|
+ // slot: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // value: '',
|
|
|
|
+ // },
|
|
|
|
+ // },
|
|
|
|
+ // background: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // type: 'image',
|
|
|
|
+ // link: '',
|
|
|
|
+ // },
|
|
|
|
+ // layout: {
|
|
|
|
+ // direction: 'column',
|
|
|
|
+ // items: [
|
|
|
|
+ // {
|
|
|
|
+ // name: 'list',
|
|
|
|
+ // basis: '100%',
|
|
|
|
+ // },
|
|
|
|
+ // ],
|
|
|
|
+ // },
|
|
|
|
+ // complex_list: [],
|
|
|
|
+ // chart: [],
|
|
|
|
+ // table: [],
|
|
|
|
+ // gallery: [],
|
|
|
|
+ // list: [
|
|
|
|
+ // {
|
|
|
|
+ // type: 'K',
|
|
|
|
+ // readFrom: '',
|
|
|
|
+ // items: [
|
|
|
|
+ // {
|
|
|
|
+ // label: '701001传感器的值',
|
|
|
|
+ // value: '${701001.readData.value}',
|
|
|
|
+ // color: 'blue',
|
|
|
|
+ // },
|
|
|
|
+ // ],
|
|
|
|
+ // },
|
|
|
|
+ // ],
|
|
|
|
+ // gallery_list: [],
|
|
|
|
+ // preset: [],
|
|
|
|
+ // to: '',
|
|
|
|
+ // },
|
|
|
|
+ // showStyle: {
|
|
|
|
+ // size: 'width:348px;height:200px;',
|
|
|
|
+ // version: '原版',
|
|
|
|
+ // position: 'top:340px;left:10px;',
|
|
|
|
+ // },
|
|
|
|
+ // },
|
|
|
|
+ // {
|
|
|
|
+ // deviceType: '1709773229143920641',
|
|
|
|
+ // moduleName: '排水泵',
|
|
|
|
+ // pageType: 'gasPumpMonitor',
|
|
|
|
+ // moduleData: {
|
|
|
|
+ // header: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // readFrom: '',
|
|
|
|
+ // selector: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // value: '',
|
|
|
|
+ // },
|
|
|
|
+ // slot: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // value: '',
|
|
|
|
+ // },
|
|
|
|
+ // },
|
|
|
|
+ // background: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // type: 'image',
|
|
|
|
+ // link: '',
|
|
|
|
+ // },
|
|
|
|
+ // layout: {
|
|
|
|
+ // direction: 'column',
|
|
|
|
+ // items: [
|
|
|
|
+ // {
|
|
|
|
+ // name: 'list',
|
|
|
|
+ // basis: '100%',
|
|
|
|
+ // },
|
|
|
|
+ // ],
|
|
|
|
+ // },
|
|
|
|
+ // complex_list: [],
|
|
|
|
+ // chart: [],
|
|
|
|
+ // table: [],
|
|
|
|
+ // gallery: [],
|
|
|
|
+ // list: [
|
|
|
|
+ // {
|
|
|
|
+ // type: 'K',
|
|
|
|
+ // readFrom: '',
|
|
|
|
+ // items: [
|
|
|
|
+ // {
|
|
|
|
+ // label: '701001传感器的值',
|
|
|
|
+ // value: '${701001.readData.value}',
|
|
|
|
+ // color: 'blue',
|
|
|
|
+ // },
|
|
|
|
+ // ],
|
|
|
|
+ // },
|
|
|
|
+ // ],
|
|
|
|
+ // gallery_list: [],
|
|
|
|
+ // preset: [],
|
|
|
|
+ // to: '',
|
|
|
|
+ // },
|
|
|
|
+ // showStyle: {
|
|
|
|
+ // size: 'width:348px;height:200px;',
|
|
|
|
+ // version: '原版',
|
|
|
|
+ // position: 'top:550px;left:10px;',
|
|
|
|
+ // },
|
|
|
|
+ // },
|
|
|
|
+ // {
|
|
|
|
+ // deviceType: '1709773229143920641',
|
|
|
|
+ // moduleName: '泵站检测详情',
|
|
|
|
+ // pageType: 'gasPumpMonitor',
|
|
|
|
+ // moduleData: {
|
|
|
|
+ // header: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // readFrom: '',
|
|
|
|
+ // selector: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // value: '',
|
|
|
|
+ // },
|
|
|
|
+ // slot: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // value: '',
|
|
|
|
+ // },
|
|
|
|
+ // },
|
|
|
|
+ // background: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // type: 'image',
|
|
|
|
+ // link: '',
|
|
|
|
+ // },
|
|
|
|
+ // layout: {
|
|
|
|
+ // direction: 'column',
|
|
|
|
+ // items: [
|
|
|
|
+ // {
|
|
|
|
+ // name: 'list',
|
|
|
|
+ // basis: '100%',
|
|
|
|
+ // },
|
|
|
|
+ // ],
|
|
|
|
+ // },
|
|
|
|
+ // complex_list: [],
|
|
|
|
+ // chart: [],
|
|
|
|
+ // table: [],
|
|
|
|
+ // gallery: [],
|
|
|
|
+ // list: [
|
|
|
|
+ // {
|
|
|
|
+ // type: 'K',
|
|
|
|
+ // readFrom: '',
|
|
|
|
+ // items: [
|
|
|
|
+ // {
|
|
|
|
+ // label: '701001传感器的值',
|
|
|
|
+ // value: '${701001.readData.value}',
|
|
|
|
+ // color: 'blue',
|
|
|
|
+ // },
|
|
|
|
+ // ],
|
|
|
|
+ // },
|
|
|
|
+ // ],
|
|
|
|
+ // gallery_list: [],
|
|
|
|
+ // preset: [],
|
|
|
|
+ // to: '',
|
|
|
|
+ // },
|
|
|
|
+ // showStyle: {
|
|
|
|
+ // size: 'width:348px;height:490px;',
|
|
|
|
+ // version: '原版',
|
|
|
|
+ // position: 'top:30px;right:0px;',
|
|
|
|
+ // },
|
|
|
|
+ // },
|
|
|
|
+ // {
|
|
|
|
+ // deviceType: '1709773300489031682',
|
|
|
|
+ // moduleName: '瓦斯泵',
|
|
|
|
+ // pageType: 'gasPumpMonitor',
|
|
|
|
+ // moduleData: {
|
|
|
|
+ // header: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // readFrom: '',
|
|
|
|
+ // selector: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // value: '',
|
|
|
|
+ // },
|
|
|
|
+ // slot: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // value: '',
|
|
|
|
+ // },
|
|
|
|
+ // },
|
|
|
|
+ // background: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // type: 'image',
|
|
|
|
+ // link: '',
|
|
|
|
+ // },
|
|
|
|
+ // layout: {
|
|
|
|
+ // direction: 'column',
|
|
|
|
+ // items: [
|
|
|
|
+ // {
|
|
|
|
+ // name: 'list',
|
|
|
|
+ // basis: '100%',
|
|
|
|
+ // },
|
|
|
|
+ // ],
|
|
|
|
+ // },
|
|
|
|
+ // complex_list: [],
|
|
|
|
+ // chart: [],
|
|
|
|
+ // table: [],
|
|
|
|
+ // gallery: [],
|
|
|
|
+ // list: [
|
|
|
|
+ // {
|
|
|
|
+ // type: 'K',
|
|
|
|
+ // readFrom: '',
|
|
|
|
+ // items: [
|
|
|
|
+ // {
|
|
|
|
+ // label: '701004传感器的值',
|
|
|
|
+ // value: '${701004.readData.value}',
|
|
|
|
+ // color: 'blue',
|
|
|
|
+ // },
|
|
|
|
+ // ],
|
|
|
|
+ // },
|
|
|
|
+ // ],
|
|
|
|
+ // gallery_list: [],
|
|
|
|
+ // preset: [],
|
|
|
|
+ // to: '',
|
|
|
|
+ // },
|
|
|
|
+ // showStyle: {
|
|
|
|
+ // size: 'width:348px;height:300px;',
|
|
|
|
+ // version: '原版',
|
|
|
|
+ // position: 'top:30px;left:10px;',
|
|
|
|
+ // },
|
|
|
|
+ // },
|
|
|
|
+ // {
|
|
|
|
+ // deviceType: '1709773300489031682',
|
|
|
|
+ // moduleName: '注水泵',
|
|
|
|
+ // pageType: 'gasPumpMonitor',
|
|
|
|
+ // moduleData: {
|
|
|
|
+ // header: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // readFrom: '',
|
|
|
|
+ // selector: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // value: '',
|
|
|
|
+ // },
|
|
|
|
+ // slot: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // value: '',
|
|
|
|
+ // },
|
|
|
|
+ // },
|
|
|
|
+ // background: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // type: 'image',
|
|
|
|
+ // link: '',
|
|
|
|
+ // },
|
|
|
|
+ // layout: {
|
|
|
|
+ // direction: 'column',
|
|
|
|
+ // items: [
|
|
|
|
+ // {
|
|
|
|
+ // name: 'list',
|
|
|
|
+ // basis: '100%',
|
|
|
|
+ // },
|
|
|
|
+ // ],
|
|
|
|
+ // },
|
|
|
|
+ // complex_list: [],
|
|
|
|
+ // chart: [],
|
|
|
|
+ // table: [],
|
|
|
|
+ // gallery: [],
|
|
|
|
+ // list: [
|
|
|
|
+ // {
|
|
|
|
+ // type: 'K',
|
|
|
|
+ // readFrom: '',
|
|
|
|
+ // items: [
|
|
|
|
+ // {
|
|
|
|
+ // label: '701004传感器的值',
|
|
|
|
+ // value: '${701004.readData.value}',
|
|
|
|
+ // color: 'blue',
|
|
|
|
+ // },
|
|
|
|
+ // ],
|
|
|
|
+ // },
|
|
|
|
+ // ],
|
|
|
|
+ // gallery_list: [],
|
|
|
|
+ // preset: [],
|
|
|
|
+ // to: '',
|
|
|
|
+ // },
|
|
|
|
+ // showStyle: {
|
|
|
|
+ // size: 'width:348px;height:200px;',
|
|
|
|
+ // version: '原版',
|
|
|
|
+ // position: 'top:340px;left:10px;',
|
|
|
|
+ // },
|
|
|
|
+ // },
|
|
|
|
+ // {
|
|
|
|
+ // deviceType: '1709773300489031682',
|
|
|
|
+ // moduleName: '排水泵',
|
|
|
|
+ // pageType: 'gasPumpMonitor',
|
|
|
|
+ // moduleData: {
|
|
|
|
+ // header: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // readFrom: '',
|
|
|
|
+ // selector: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // value: '',
|
|
|
|
+ // },
|
|
|
|
+ // slot: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // value: '',
|
|
|
|
+ // },
|
|
|
|
+ // },
|
|
|
|
+ // background: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // type: 'image',
|
|
|
|
+ // link: '',
|
|
|
|
+ // },
|
|
|
|
+ // layout: {
|
|
|
|
+ // direction: 'column',
|
|
|
|
+ // items: [
|
|
|
|
+ // {
|
|
|
|
+ // name: 'list',
|
|
|
|
+ // basis: '100%',
|
|
|
|
+ // },
|
|
|
|
+ // ],
|
|
|
|
+ // },
|
|
|
|
+ // complex_list: [],
|
|
|
|
+ // chart: [],
|
|
|
|
+ // table: [],
|
|
|
|
+ // gallery: [],
|
|
|
|
+ // list: [
|
|
|
|
+ // {
|
|
|
|
+ // type: 'K',
|
|
|
|
+ // readFrom: '',
|
|
|
|
+ // items: [
|
|
|
|
+ // {
|
|
|
|
+ // label: '701004传感器的值',
|
|
|
|
+ // value: '${701004.readData.value}',
|
|
|
|
+ // color: 'blue',
|
|
|
|
+ // },
|
|
|
|
+ // ],
|
|
|
|
+ // },
|
|
|
|
+ // ],
|
|
|
|
+ // gallery_list: [],
|
|
|
|
+ // preset: [],
|
|
|
|
+ // to: '',
|
|
|
|
+ // },
|
|
|
|
+ // showStyle: {
|
|
|
|
+ // size: 'width:348px;height:200px;',
|
|
|
|
+ // version: '原版',
|
|
|
|
+ // position: 'top:550px;left:10px;',
|
|
|
|
+ // },
|
|
|
|
+ // },
|
|
|
|
+ // {
|
|
|
|
+ // deviceType: '1709773300489031682',
|
|
|
|
+ // moduleName: '泵站检测详情',
|
|
|
|
+ // pageType: 'gasPumpMonitor',
|
|
|
|
+ // moduleData: {
|
|
|
|
+ // header: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // readFrom: '',
|
|
|
|
+ // selector: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // value: '',
|
|
|
|
+ // },
|
|
|
|
+ // slot: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // value: '',
|
|
|
|
+ // },
|
|
|
|
+ // },
|
|
|
|
+ // background: {
|
|
|
|
+ // show: false,
|
|
|
|
+ // type: 'image',
|
|
|
|
+ // link: '',
|
|
|
|
+ // },
|
|
|
|
+ // layout: {
|
|
|
|
+ // direction: 'column',
|
|
|
|
+ // items: [
|
|
|
|
+ // {
|
|
|
|
+ // name: 'list',
|
|
|
|
+ // basis: '100%',
|
|
|
|
+ // },
|
|
|
|
+ // ],
|
|
|
|
+ // },
|
|
|
|
+ // complex_list: [],
|
|
|
|
+ // chart: [],
|
|
|
|
+ // table: [],
|
|
|
|
+ // gallery: [],
|
|
|
|
+ // list: [
|
|
|
|
+ // {
|
|
|
|
+ // type: 'K',
|
|
|
|
+ // readFrom: '',
|
|
|
|
+ // items: [
|
|
|
|
+ // {
|
|
|
|
+ // label: '701004传感器的值',
|
|
|
|
+ // value: '${701004.readData.value}',
|
|
|
|
+ // color: 'blue',
|
|
|
|
+ // },
|
|
|
|
+ // ],
|
|
|
|
+ // },
|
|
|
|
+ // ],
|
|
|
|
+ // gallery_list: [],
|
|
|
|
+ // preset: [],
|
|
|
|
+ // to: '',
|
|
|
|
+ // },
|
|
|
|
+ // showStyle: {
|
|
|
|
+ // size: 'width:348px;height:490px;',
|
|
|
|
+ // version: '原版',
|
|
|
|
+ // position: 'top:30px;right:0px;',
|
|
|
|
+ // },
|
|
|
|
+ // },
|
|
|
|
+ // ]);
|
|
</script>
|
|
</script>
|
|
<style lang="less" scoped>
|
|
<style lang="less" scoped>
|
|
- @import '/@/design/theme.less';
|
|
|
|
- @import '/@/design/vent/modal.less';
|
|
|
|
- @import '../../comment/less/workFace.less';
|
|
|
|
- @ventSpace: zxm;
|
|
|
|
|
|
+@import '/@/design/theme.less';
|
|
|
|
+@import '/@/design/vent/modal.less';
|
|
|
|
+@import '../../comment/less/workFace.less';
|
|
|
|
+@ventSpace: zxm;
|
|
|
|
+
|
|
|
|
+.elementContent {
|
|
|
|
+ :deep(.main-container) {
|
|
|
|
+ display: flex;
|
|
|
|
+ flex-wrap: wrap;
|
|
|
|
+ width: 690px;
|
|
|
|
+ padding: 10px 12px 10px 15px;
|
|
|
|
+ border: 1px solid #d3e1ff33;
|
|
|
|
+ background-color: #061c2a55;
|
|
|
|
+ box-shadow: 0 0 15px #3b567f55;
|
|
|
|
+ background-color: #38383833;
|
|
|
|
|
|
- .elementContent {
|
|
|
|
- :deep(.main-container) {
|
|
|
|
|
|
+ .gas-monitor-row {
|
|
display: flex;
|
|
display: flex;
|
|
|
|
+ flex-direction: row;
|
|
flex-wrap: wrap;
|
|
flex-wrap: wrap;
|
|
- width: 690px;
|
|
|
|
- padding: 10px 12px 10px 15px;
|
|
|
|
- border: 1px solid #d3e1ff33;
|
|
|
|
- background-color: #061c2a55;
|
|
|
|
- box-shadow: 0 0 15px #3b567f55;
|
|
|
|
- background-color: #38383833;
|
|
|
|
- .gas-monitor-row {
|
|
|
|
- display: flex;
|
|
|
|
- flex-direction: row;
|
|
|
|
- flex-wrap: wrap;
|
|
|
|
- color: #fff;
|
|
|
|
- line-height: 32px;
|
|
|
|
- .title {
|
|
|
|
- width: 250px;
|
|
|
|
- color: #baeaff;
|
|
|
|
- }
|
|
|
|
- .value {
|
|
|
|
- width: 80px;
|
|
|
|
- color: #efae05;
|
|
|
|
- }
|
|
|
|
|
|
+ color: #fff;
|
|
|
|
+ line-height: 32px;
|
|
|
|
+
|
|
|
|
+ .title {
|
|
|
|
+ width: 250px;
|
|
|
|
+ color: #baeaff;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .value {
|
|
|
|
+ width: 80px;
|
|
|
|
+ color: #efae05;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- .modal-monitor-box {
|
|
|
|
- background-color: #000;
|
|
|
|
- color: #fff;
|
|
|
|
- padding: 0 5px;
|
|
|
|
- display: flex;
|
|
|
|
- align-items: center;
|
|
|
|
- justify-content: center;
|
|
|
|
- .title {
|
|
|
|
- margin-right: 5px;
|
|
|
|
- }
|
|
|
|
- .signal-round {
|
|
|
|
- margin-left: 5px;
|
|
|
|
- }
|
|
|
|
- .value {
|
|
|
|
- width: 30px;
|
|
|
|
- color: #efae05;
|
|
|
|
- }
|
|
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.modal-monitor-box {
|
|
|
|
+ background-color: #000;
|
|
|
|
+ color: #fff;
|
|
|
|
+ padding: 0 5px;
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: center;
|
|
|
|
+ justify-content: center;
|
|
|
|
+
|
|
|
|
+ .title {
|
|
|
|
+ margin-right: 5px;
|
|
}
|
|
}
|
|
- .device-state {
|
|
|
|
- width: 100%;
|
|
|
|
- position: absolute;
|
|
|
|
- top: 20px;
|
|
|
|
- color: #e90000;
|
|
|
|
- display: flex;
|
|
|
|
- justify-content: center;
|
|
|
|
- font-size: 20px;
|
|
|
|
|
|
+
|
|
|
|
+ .signal-round {
|
|
|
|
+ margin-left: 5px;
|
|
}
|
|
}
|
|
|
|
|
|
- .lr {
|
|
|
|
- margin-top: 0 !important;
|
|
|
|
|
|
+ .value {
|
|
|
|
+ width: 30px;
|
|
|
|
+ color: #efae05;
|
|
}
|
|
}
|
|
- .left-box {
|
|
|
|
- width: 360px !important;
|
|
|
|
- direction: rtl;
|
|
|
|
- overflow-y: auto;
|
|
|
|
- overflow-x: hidden;
|
|
|
|
- height: calc(100% - 60px);
|
|
|
|
- margin-top: 30px !important;
|
|
|
|
-
|
|
|
|
- .left-container {
|
|
|
|
- direction: ltr;
|
|
|
|
- }
|
|
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.device-state {
|
|
|
|
+ width: 100%;
|
|
|
|
+ position: absolute;
|
|
|
|
+ top: 20px;
|
|
|
|
+ color: #e90000;
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: center;
|
|
|
|
+ font-size: 20px;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.lr {
|
|
|
|
+ margin-top: 0 !important;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.left-box {
|
|
|
|
+ width: 360px !important;
|
|
|
|
+ direction: rtl;
|
|
|
|
+ overflow-y: auto;
|
|
|
|
+ overflow-x: hidden;
|
|
|
|
+ height: calc(100% - 60px);
|
|
|
|
+ margin-top: 30px !important;
|
|
|
|
+
|
|
|
|
+ .left-container {
|
|
|
|
+ direction: ltr;
|
|
}
|
|
}
|
|
- .right-box {
|
|
|
|
- width: 350px !important;
|
|
|
|
- overflow-y: auto;
|
|
|
|
- overflow-x: hidden;
|
|
|
|
- .environment-monitor {
|
|
|
|
- .item {
|
|
|
|
- flex: 1;
|
|
|
|
- margin: 0 5px;
|
|
|
|
- .title {
|
|
|
|
- color: #7ae5ff;
|
|
|
|
- text-align: center;
|
|
|
|
- margin-bottom: 2px;
|
|
|
|
- }
|
|
|
|
- .num {
|
|
|
|
- width: 100%;
|
|
|
|
- height: 30px;
|
|
|
|
- text-align: center;
|
|
|
|
- border-top: 2px solid #50c8fc;
|
|
|
|
- border-radius: 4px;
|
|
|
|
- background-image: linear-gradient(#2e4d5955, #3780b499, #2e465955);
|
|
|
|
- }
|
|
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.right-box {
|
|
|
|
+ width: 350px !important;
|
|
|
|
+ overflow-y: auto;
|
|
|
|
+ overflow-x: hidden;
|
|
|
|
+
|
|
|
|
+ .environment-monitor {
|
|
|
|
+ .item {
|
|
|
|
+ flex: 1;
|
|
|
|
+ margin: 0 5px;
|
|
|
|
+
|
|
|
|
+ .title {
|
|
|
|
+ color: #7ae5ff;
|
|
|
|
+ text-align: center;
|
|
|
|
+ margin-bottom: 2px;
|
|
}
|
|
}
|
|
- }
|
|
|
|
- .pool-box {
|
|
|
|
- width: 327px;
|
|
|
|
- height: 65px;
|
|
|
|
- padding: 0 5px;
|
|
|
|
- background: url('/@/assets/images/vent/pump1.png') no-repeat;
|
|
|
|
- background-size: cover;
|
|
|
|
- background-origin: content-box;
|
|
|
|
- margin-top: 2px;
|
|
|
|
|
|
+
|
|
.num {
|
|
.num {
|
|
- color: aqua;
|
|
|
|
- }
|
|
|
|
- .center {
|
|
|
|
- padding-right: 5px;
|
|
|
|
|
|
+ width: 100%;
|
|
|
|
+ height: 30px;
|
|
|
|
+ text-align: center;
|
|
|
|
+ border-top: 2px solid #50c8fc;
|
|
|
|
+ border-radius: 4px;
|
|
|
|
+ background-image: linear-gradient(#2e4d5955, #3780b499, #2e465955);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- .player-box {
|
|
|
|
- position: absolute;
|
|
|
|
- height: 100%;
|
|
|
|
- width: 100%;
|
|
|
|
- padding: 0 20px 0 20px;
|
|
|
|
- z-index: 9999;
|
|
|
|
- display: flex;
|
|
|
|
- align-items: end;
|
|
|
|
- bottom: 80px;
|
|
|
|
- :deep(#LivePlayerBox) {
|
|
|
|
- display: flex;
|
|
|
|
- justify-content: end;
|
|
|
|
|
|
+
|
|
|
|
+ .pool-box {
|
|
|
|
+ width: 327px;
|
|
|
|
+ height: 65px;
|
|
|
|
+ padding: 0 5px;
|
|
|
|
+ background: url('/@/assets/images/vent/pump1.png') no-repeat;
|
|
|
|
+ background-size: cover;
|
|
|
|
+ background-origin: content-box;
|
|
|
|
+ margin-top: 2px;
|
|
|
|
+
|
|
|
|
+ .num {
|
|
|
|
+ color: aqua;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .center {
|
|
|
|
+ padding-right: 5px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+}
|
|
|
|
|
|
- .input-box {
|
|
|
|
- width: calc(100%);
|
|
|
|
|
|
+.player-box {
|
|
|
|
+ position: absolute;
|
|
|
|
+ height: 100%;
|
|
|
|
+ width: 100%;
|
|
|
|
+ padding: 0 20px 0 20px;
|
|
|
|
+ z-index: 9999;
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: end;
|
|
|
|
+ bottom: 80px;
|
|
|
|
+
|
|
|
|
+ :deep(#LivePlayerBox) {
|
|
display: flex;
|
|
display: flex;
|
|
- flex-direction: row !important;
|
|
|
|
- flex-wrap: wrap !important;
|
|
|
|
- .input-item {
|
|
|
|
- width: calc(50% - 8px);
|
|
|
|
- padding: 0 2px;
|
|
|
|
-
|
|
|
|
- &:nth-child(2n) {
|
|
|
|
- margin-left: 4px;
|
|
|
|
- }
|
|
|
|
|
|
+ justify-content: end;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.input-box {
|
|
|
|
+ width: calc(100%);
|
|
|
|
+ display: flex;
|
|
|
|
+ flex-direction: row !important;
|
|
|
|
+ flex-wrap: wrap !important;
|
|
|
|
+
|
|
|
|
+ .input-item {
|
|
|
|
+ width: calc(50% - 8px);
|
|
|
|
+ padding: 0 2px;
|
|
|
|
+
|
|
|
|
+ &:nth-child(2n) {
|
|
|
|
+ margin-left: 4px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.btn-group {
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: space-around;
|
|
|
|
+
|
|
|
|
+ .btn-item {
|
|
|
|
+ width: 82px;
|
|
|
|
+ text-align: center;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.top-btn {
|
|
.btn-group {
|
|
.btn-group {
|
|
- display: flex;
|
|
|
|
- justify-content: space-around;
|
|
|
|
|
|
+ margin-bottom: 8px;
|
|
|
|
+
|
|
.btn-item {
|
|
.btn-item {
|
|
- width: 82px;
|
|
|
|
- text-align: center;
|
|
|
|
|
|
+ width: calc(50% - 16px);
|
|
|
|
+ margin: 0 4px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- .top-btn {
|
|
|
|
- .btn-group {
|
|
|
|
- margin-bottom: 8px;
|
|
|
|
- .btn-item {
|
|
|
|
- width: calc(50% - 16px);
|
|
|
|
- margin: 0 4px;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- .control-item {
|
|
|
|
- margin-left: 10px;
|
|
|
|
- margin-bottom: 8px;
|
|
|
|
- display: flex;
|
|
|
|
- .control-title {
|
|
|
|
- width: 80px;
|
|
|
|
- color: var(--vent-font-action-link);
|
|
|
|
- }
|
|
|
|
- .control-container {
|
|
|
|
- display: flex;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- .btn-box {
|
|
|
|
|
|
+
|
|
|
|
+ .control-item {
|
|
|
|
+ margin-left: 10px;
|
|
|
|
+ margin-bottom: 8px;
|
|
display: flex;
|
|
display: flex;
|
|
- .btn {
|
|
|
|
- padding: 0 8px !important;
|
|
|
|
- margin: 0 2px;
|
|
|
|
|
|
+
|
|
|
|
+ .control-title {
|
|
|
|
+ width: 80px;
|
|
|
|
+ color: var(--vent-font-action-link);
|
|
}
|
|
}
|
|
- }
|
|
|
|
- .state-header {
|
|
|
|
- display: flex;
|
|
|
|
- color: var(--vent-font-action-link);
|
|
|
|
- .header-item {
|
|
|
|
- width: 25%;
|
|
|
|
- text-align: center;
|
|
|
|
|
|
+
|
|
|
|
+ .control-container {
|
|
|
|
+ display: flex;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- .device-row {
|
|
|
|
- display: flex;
|
|
|
|
- margin-top: 10px;
|
|
|
|
- .state {
|
|
|
|
- width: 25%;
|
|
|
|
- text-align: center;
|
|
|
|
- font-size: 13px;
|
|
|
|
- }
|
|
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.btn-box {
|
|
|
|
+ display: flex;
|
|
|
|
+
|
|
|
|
+ .btn {
|
|
|
|
+ padding: 0 8px !important;
|
|
|
|
+ margin: 0 2px;
|
|
}
|
|
}
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.state-header {
|
|
|
|
+ display: flex;
|
|
|
|
+ color: var(--vent-font-action-link);
|
|
|
|
|
|
- :deep(.@{ventSpace}-tabs-tabpane-active) {
|
|
|
|
- overflow: auto;
|
|
|
|
|
|
+ .header-item {
|
|
|
|
+ width: 25%;
|
|
|
|
+ text-align: center;
|
|
}
|
|
}
|
|
- :deep(.list-item__background) {
|
|
|
|
- background-image: linear-gradient(to right, #39deff15, #3977e500) !important;
|
|
|
|
- line-height: 30px !important;
|
|
|
|
- height: 30px !important;
|
|
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.device-row {
|
|
|
|
+ display: flex;
|
|
|
|
+ margin-top: 10px;
|
|
|
|
+
|
|
|
|
+ .state {
|
|
|
|
+ width: 25%;
|
|
|
|
+ text-align: center;
|
|
|
|
+ font-size: 13px;
|
|
}
|
|
}
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+:deep(.@{ventSpace}-tabs-tabpane-active) {
|
|
|
|
+ overflow: auto;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+:deep(.list-item__background) {
|
|
|
|
+ background-image: linear-gradient(to right, #39deff15, #3977e500) !important;
|
|
|
|
+ line-height: 30px !important;
|
|
|
|
+ height: 30px !important;
|
|
|
|
+}
|
|
</style>
|
|
</style>
|