|
@@ -94,6 +94,23 @@
|
|
<div id="main3D" style="width: 100%; height: 100%; position: absolute; overflow: hidden"> </div>
|
|
<div id="main3D" style="width: 100%; height: 100%; position: absolute; overflow: hidden"> </div>
|
|
<FanEchrats id="fan-echarts" :chartData="selectData" style="position: absolute; z-index: -1" />
|
|
<FanEchrats id="fan-echarts" :chartData="selectData" style="position: absolute; z-index: -1" />
|
|
</div>
|
|
</div>
|
|
|
|
+ <!-- v-if="hasPermission('btn:remote')" -->
|
|
|
|
+ <div class="top-right">
|
|
|
|
+ <div class="control-title">控制模式:</div>
|
|
|
|
+ <a-radio-group v-model:value="selectData.autoRoManual">
|
|
|
|
+ <template v-for="(item, index) in modelList" :key="index">
|
|
|
|
+ <a-radio :value="item.value" :disabled="true">{{ item.text }}</a-radio>
|
|
|
|
+ </template>
|
|
|
|
+ </a-radio-group>
|
|
|
|
+ <!-- <div class="button-box" v-for="(item, index) in modelList" @click="handleOk('remote', item.value)" :key="index">{{ item.text }}</div> -->
|
|
|
|
+ <div
|
|
|
|
+ class="button-box"
|
|
|
|
+ v-for="(item, index) in modelList"
|
|
|
|
+ @click="showModal({ key: 'remote', value: '控制模式', ctrlValue: item.value })"
|
|
|
|
+ :key="index"
|
|
|
|
+ >{{ item.text }}</div
|
|
|
|
+ >
|
|
|
|
+ </div>
|
|
|
|
|
|
<div class="scene-box" style="z-index: 999">
|
|
<div class="scene-box" style="z-index: 999">
|
|
<div class="title-text" style="position: absolute; z-index: 9999; width: 100%; text-align: center">{{
|
|
<div class="title-text" style="position: absolute; z-index: 9999; width: 100%; text-align: center">{{
|
|
@@ -106,6 +123,7 @@
|
|
</template>
|
|
</template>
|
|
<!-- <div class="button-box" v-for="(item, index) in modalTypeArr.centerBtnArr" :key="index" @click="showModal(item)">{{ item.value }}</div> -->
|
|
<!-- <div class="button-box" v-for="(item, index) in modalTypeArr.centerBtnArr" :key="index" @click="showModal(item)">{{ item.value }}</div> -->
|
|
</div>
|
|
</div>
|
|
|
|
+ <!-- 控制模式 -->
|
|
|
|
|
|
<div v-if="!faultShow" class="data-show-box">
|
|
<div v-if="!faultShow" class="data-show-box">
|
|
<div class="data-item">
|
|
<div class="data-item">
|
|
@@ -150,7 +168,7 @@
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
- <div class="data-item">
|
|
|
|
|
|
+ <div class="data-item" style="margin-top: 8px">
|
|
<div class="item-header">设备报警</div>
|
|
<div class="item-header">设备报警</div>
|
|
<div class="item-container">
|
|
<div class="item-container">
|
|
<div class="tab">
|
|
<div class="tab">
|
|
@@ -576,6 +594,7 @@
|
|
import { useGlobSetting } from '/@/hooks/setting';
|
|
import { useGlobSetting } from '/@/hooks/setting';
|
|
import { usePermission } from '/@/hooks/web/usePermission';
|
|
import { usePermission } from '/@/hooks/web/usePermission';
|
|
import { cloneDeep } from 'lodash-es';
|
|
import { cloneDeep } from 'lodash-es';
|
|
|
|
+ import { getDictItems } from '/@/api/common/api';
|
|
|
|
|
|
const globalConfig = inject('globalConfig');
|
|
const globalConfig = inject('globalConfig');
|
|
const HistoryTable =
|
|
const HistoryTable =
|
|
@@ -593,6 +612,8 @@
|
|
const scroll = reactive({
|
|
const scroll = reactive({
|
|
y: 180,
|
|
y: 180,
|
|
});
|
|
});
|
|
|
|
+ const modelList = ref<{ text: string; value: string }[]>([]);
|
|
|
|
+ let modeValue: null | string | number = null;
|
|
const playerRef = ref();
|
|
const playerRef = ref();
|
|
const isSimulation = true; // 是否模拟状态
|
|
const isSimulation = true; // 是否模拟状态
|
|
const MonitorDataTable = ref();
|
|
const MonitorDataTable = ref();
|
|
@@ -633,6 +654,7 @@
|
|
Fan2FanPre: '-',
|
|
Fan2FanPre: '-',
|
|
Fan1FanPre: '-',
|
|
Fan1FanPre: '-',
|
|
otherInfo: '',
|
|
otherInfo: '',
|
|
|
|
+ autoRoManual: null,
|
|
});
|
|
});
|
|
|
|
|
|
const deviceType = ref(selectData.deviceType);
|
|
const deviceType = ref(selectData.deviceType);
|
|
@@ -961,14 +983,18 @@
|
|
backMonitorIsShow.value = true;
|
|
backMonitorIsShow.value = true;
|
|
frontMonitorIsShow.value = false;
|
|
frontMonitorIsShow.value = false;
|
|
}
|
|
}
|
|
- }
|
|
|
|
- if (modalType.value == 'frequency') {
|
|
|
|
|
|
+ } else if (modalType.value == 'frequency') {
|
|
if (selectData['Fan1StartStatus'] == 1 && selectData['Fan2StartStatus'] == 0) {
|
|
if (selectData['Fan1StartStatus'] == 1 && selectData['Fan2StartStatus'] == 0) {
|
|
frequencyVal.value = selectData['Fan1FreqHz'];
|
|
frequencyVal.value = selectData['Fan1FreqHz'];
|
|
}
|
|
}
|
|
if (selectData['Fan2StartStatus'] == 1 && selectData['Fan1StartStatus'] == 0) {
|
|
if (selectData['Fan2StartStatus'] == 1 && selectData['Fan1StartStatus'] == 0) {
|
|
frequencyVal.value = selectData['Fan2FreqHz'];
|
|
frequencyVal.value = selectData['Fan2FreqHz'];
|
|
}
|
|
}
|
|
|
|
+ } else if (modalType.value == 'remote') {
|
|
|
|
+ // 控制模式
|
|
|
|
+ if (obj['ctrlValue']) {
|
|
|
|
+ modeValue = obj['ctrlValue'];
|
|
|
|
+ }
|
|
}
|
|
}
|
|
};
|
|
};
|
|
|
|
|
|
@@ -985,7 +1011,7 @@
|
|
}
|
|
}
|
|
};
|
|
};
|
|
|
|
|
|
- const handleOk = (flag?) => {
|
|
|
|
|
|
+ const handleOk = () => {
|
|
if (passWord.value == '') {
|
|
if (passWord.value == '') {
|
|
createMessage.warning('请输入密码!');
|
|
createMessage.warning('请输入密码!');
|
|
return;
|
|
return;
|
|
@@ -1240,6 +1266,15 @@
|
|
start('CtrlFanReset').catch((err) => {
|
|
start('CtrlFanReset').catch((err) => {
|
|
createMessage.error(err.message);
|
|
createMessage.error(err.message);
|
|
});
|
|
});
|
|
|
|
+ } else if (modalType.value == 'remote') {
|
|
|
|
+ // 远程就地控制
|
|
|
|
+ start('autoRoManualControl', modeValue)
|
|
|
|
+ .then(() => {
|
|
|
|
+ createMessage.success('指令下发成功');
|
|
|
|
+ })
|
|
|
|
+ .catch((err) => {
|
|
|
|
+ createMessage.error(err.message);
|
|
|
|
+ });
|
|
}
|
|
}
|
|
};
|
|
};
|
|
};
|
|
};
|
|
@@ -1286,9 +1321,9 @@
|
|
getDeviceBaseList();
|
|
getDeviceBaseList();
|
|
});
|
|
});
|
|
|
|
|
|
- onMounted(() => {
|
|
|
|
|
|
+ onMounted(async () => {
|
|
loading.value = true;
|
|
loading.value = true;
|
|
-
|
|
|
|
|
|
+ modelList.value = await getDictItems('mainFanModel');
|
|
mountedThree(player1.value).then(async () => {
|
|
mountedThree(player1.value).then(async () => {
|
|
// await setModelType('mainWindRect');
|
|
// await setModelType('mainWindRect');
|
|
getMonitor(true);
|
|
getMonitor(true);
|
|
@@ -1406,7 +1441,15 @@
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+ .top-right {
|
|
|
|
+ position: absolute;
|
|
|
|
+ display: flex;
|
|
|
|
+ right: 0px;
|
|
|
|
+ top: 55px;
|
|
|
|
+ align-items: center;
|
|
|
|
+ color: #fff;
|
|
|
|
+ z-index: 1;
|
|
|
|
+ }
|
|
.data-show-box {
|
|
.data-show-box {
|
|
position: relative;
|
|
position: relative;
|
|
display: flex;
|
|
display: flex;
|
|
@@ -1904,6 +1947,13 @@
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ :deep(.zxm-radio-disabled + span) {
|
|
|
|
+ color: #fff !important;
|
|
|
|
+ }
|
|
|
|
+ :deep(.zxm-radio-disabled .zxm-radio-inner::after) {
|
|
|
|
+ background-color: #127cb5 !important;
|
|
|
|
+ }
|
|
|
|
+
|
|
::v-deep(#LivePlayerBox) {
|
|
::v-deep(#LivePlayerBox) {
|
|
display: flex;
|
|
display: flex;
|
|
flex-direction: row;
|
|
flex-direction: row;
|