|
@@ -0,0 +1,369 @@
|
|
|
+<template>
|
|
|
+ <a-spin tip="Loading..." :spinning="loading">
|
|
|
+ <div class="monitor-container">
|
|
|
+ <div class="lr left-box">
|
|
|
+ <ventBox1>
|
|
|
+ <template #title>
|
|
|
+ <div>均压与低氧参数监测与设置</div>
|
|
|
+ </template>
|
|
|
+ <template #container>
|
|
|
+ <div class="vent-flex-row-between auto-control mt-10px mb-10px">
|
|
|
+ <div class="title">自动调节:</div>
|
|
|
+ <a-radio-group v-model:value="isAutoControl" name="radioGroup" @change="changeType(isAutoControl)">
|
|
|
+ <a-radio value="1">关闭</a-radio>
|
|
|
+ <a-radio value="2">开启</a-radio>
|
|
|
+ </a-radio-group>
|
|
|
+ </div>
|
|
|
+ <div class="input-box">
|
|
|
+ <div class="divider-line">开始条件</div>
|
|
|
+ <div v-for="(item, index) in settingParam1" class="input-item" :key="index">
|
|
|
+ <div class="title">{{ item.title }}:</div>
|
|
|
+ <a-input-number class="input-value" v-model:value="formData[item.code]" placeholder="" />
|
|
|
+ <div class="unit">{{ item.unit }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="divider-line">调节参数</div>
|
|
|
+ <div v-for="(item, index) in settingParam2" class="input-item" :key="index">
|
|
|
+ <div class="title">{{ item.title }}:</div>
|
|
|
+ <a-input-number class="input-value" v-model:value="formData[item.code]" placeholder="" />
|
|
|
+ <div class="unit">{{ item.unit }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="divider-line">结束时间</div>
|
|
|
+ <div v-for="(item, index) in settingParam3" class="input-item" :key="index">
|
|
|
+ <div class="title">{{ item.title }}:</div>
|
|
|
+ <a-input-number class="input-value" v-model:value="formData[item.code]" placeholder="" />
|
|
|
+ <div class="unit">{{ item.unit }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="btn-box" style="text-align: center">
|
|
|
+ <div class="btn btn1" @click="onSubmit">提交</div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </ventBox1>
|
|
|
+ </div>
|
|
|
+ <div class="lr">
|
|
|
+ <ventBox1>
|
|
|
+ <template #title>
|
|
|
+ <div>均压工作面风机与风门联动</div>
|
|
|
+ </template>
|
|
|
+ <template #container>
|
|
|
+ <div class="vent-flex-row-between auto-control mt-10px mb-10px">
|
|
|
+ <div class="title">自动调节:</div>
|
|
|
+ <a-radio-group v-model:value="isAutoControl" name="radioGroup" @change="changeType(isAutoControl)">
|
|
|
+ <a-radio value="1">关闭</a-radio>
|
|
|
+ <a-radio value="2">开启</a-radio>
|
|
|
+ </a-radio-group>
|
|
|
+ </div>
|
|
|
+ <div class="btn-box" style="text-align: center">
|
|
|
+ <div class="btn btn1" @click="onSubmit">提交</div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </ventBox1>
|
|
|
+ </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>
|
|
|
+ </a-spin>
|
|
|
+</template>
|
|
|
+<script setup lang="ts">
|
|
|
+ import { ref, onMounted, onUnmounted, defineProps } from 'vue';
|
|
|
+ import { mountedThree, destroy, setModelType, updateText, play } from '../balancePress.threejs';
|
|
|
+ import { list } from '../balancePress.api';
|
|
|
+ import ModuleCommon from '../../../home/configurable/components/ModuleCommon.vue';
|
|
|
+ import { useInitConfigs } from '../../../home/configurable/hooks/useInit';
|
|
|
+ import { useGlobSetting } from '/@/hooks/setting';
|
|
|
+ import { settingParam1, settingParam2, settingParam3 } from '../balancePress.data';
|
|
|
+ import { message } from 'ant-design-vue';
|
|
|
+ import ventBox1 from '/@/components/vent/ventBox1.vue';
|
|
|
+ // import { Config } from '../../../deviceManager/configurationTable/types';
|
|
|
+
|
|
|
+ const props = defineProps({
|
|
|
+ deviceId: {
|
|
|
+ type: String,
|
|
|
+ require: true,
|
|
|
+ },
|
|
|
+ });
|
|
|
+
|
|
|
+ const { sysOrgCode } = useGlobSetting();
|
|
|
+
|
|
|
+ const loading = ref(false);
|
|
|
+
|
|
|
+ // 监测数据
|
|
|
+ const selectData = ref();
|
|
|
+
|
|
|
+ // https获取监测数据
|
|
|
+ let timer: any = null;
|
|
|
+ function getMonitor(flag?) {
|
|
|
+ if (Object.prototype.toString.call(timer) === '[object Null]') {
|
|
|
+ timer = setTimeout(
|
|
|
+ async () => {
|
|
|
+ if (props.deviceId) {
|
|
|
+ const data = await getDataSource(props.deviceId);
|
|
|
+ // Object.assign(selectData, data);
|
|
|
+ updateText(selectData);
|
|
|
+ selectData.value = data;
|
|
|
+ }
|
|
|
+ if (timer) {
|
|
|
+ timer = null;
|
|
|
+ }
|
|
|
+ await getMonitor();
|
|
|
+ loading.value = false;
|
|
|
+ },
|
|
|
+ flag ? 0 : 1000
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ async function getDataSource(systemID) {
|
|
|
+ const res = await list({ devicetype: 'sys', systemID });
|
|
|
+
|
|
|
+ const result = Array.from(res.msgTxt).reduce(
|
|
|
+ (obj: any, e: any) => {
|
|
|
+ obj[e.type] = e;
|
|
|
+
|
|
|
+ // if (true) {
|
|
|
+ if (sysOrgCode === 'sdmtjtswmk') {
|
|
|
+ if (e.type.startsWith('fanlocal')) {
|
|
|
+ obj.fanlocal.datalist.push(...e.datalist);
|
|
|
+ }
|
|
|
+ if (e.type.startsWith('safetymonitor')) {
|
|
|
+ e.datalist.forEach((ele) => {
|
|
|
+ if (ele.strinstallpos.includes('风门')) {
|
|
|
+ obj.gate.datalist.push(ele);
|
|
|
+ } else if (ele.strinstallpos.includes('风窗')) {
|
|
|
+ obj.window.datalist.push(ele);
|
|
|
+ } else if (ele.strinstallpos.includes('工作面')) {
|
|
|
+ obj.work_surface.datalist.push(ele);
|
|
|
+ } else {
|
|
|
+ obj.others.datalist.push(ele);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return obj;
|
|
|
+ },
|
|
|
+ {
|
|
|
+ /** 用于归类fanlocal */
|
|
|
+ fanlocal: { datalist: [] },
|
|
|
+ /** 用于归类gate */
|
|
|
+ gate: { datalist: [] },
|
|
|
+ /** 用于归类window */
|
|
|
+ window: { datalist: [] },
|
|
|
+ /** 用于归类work_surface */
|
|
|
+ work_surface: { datalist: [] },
|
|
|
+ others: { datalist: [] },
|
|
|
+ }
|
|
|
+ );
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ // const configs = ref<Config[]>([
|
|
|
+ // {
|
|
|
+ // deviceType: '',
|
|
|
+ // moduleName: '局扇',
|
|
|
+ // pageType: 'balancePressHome',
|
|
|
+ // moduleData: {
|
|
|
+ // header: {
|
|
|
+ // show: false,
|
|
|
+ // readFrom: '',
|
|
|
+ // selector: {
|
|
|
+ // show: false,
|
|
|
+ // value: '',
|
|
|
+ // },
|
|
|
+ // slot: {
|
|
|
+ // show: false,
|
|
|
+ // value: '',
|
|
|
+ // },
|
|
|
+ // },
|
|
|
+ // background: {
|
|
|
+ // show: false,
|
|
|
+ // type: 'image',
|
|
|
+ // link: '',
|
|
|
+ // },
|
|
|
+ // layout: {
|
|
|
+ // direction: 'row',
|
|
|
+ // items: [
|
|
|
+ // {
|
|
|
+ // name: 'complex_list',
|
|
|
+ // basis: '50%',
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // name: 'complex_list',
|
|
|
+ // basis: '50%',
|
|
|
+ // },
|
|
|
+ // ],
|
|
|
+ // },
|
|
|
+ // complex_list: [
|
|
|
+ // {
|
|
|
+ // type: 'G',
|
|
|
+ // readFrom: 'fanlocal_steml_zj',
|
|
|
+ // mapFromData: false,
|
|
|
+ // items: [
|
|
|
+ // {
|
|
|
+ // title: '主机',
|
|
|
+ // contents: [
|
|
|
+ // {
|
|
|
+ // label: '运行状态',
|
|
|
+ // value: '${datalist[0].readData.Fan1StartStatus_str}',
|
|
|
+ // color: 'blue',
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // label: '运行频率',
|
|
|
+ // value: '${datalist[0].readData.Fan1fHz}',
|
|
|
+ // color: 'blue',
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // label: '输出电压',
|
|
|
+ // value: '${datalist[0].readData.Fan1fHz}',
|
|
|
+ // color: 'blue',
|
|
|
+ // },
|
|
|
+ // ],
|
|
|
+ // },
|
|
|
+ // ],
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // type: 'G',
|
|
|
+ // readFrom: 'fanlocal_steml_zj',
|
|
|
+ // mapFromData: false,
|
|
|
+ // items: [
|
|
|
+ // {
|
|
|
+ // title: '备机',
|
|
|
+ // contents: [
|
|
|
+ // {
|
|
|
+ // label: '运行状态',
|
|
|
+ // value: '${datalist[0].readData.Fan2StartStatus_str}',
|
|
|
+ // color: 'blue',
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // label: '运行频率',
|
|
|
+ // value: '${datalist[0].readData.Fan2fHz}',
|
|
|
+ // color: 'blue',
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // label: '输出电压',
|
|
|
+ // value: '${datalist[0].readData.Fan2fHz}',
|
|
|
+ // color: 'blue',
|
|
|
+ // },
|
|
|
+ // ],
|
|
|
+ // },
|
|
|
+ // ],
|
|
|
+ // },
|
|
|
+ // ],
|
|
|
+ // to: '',
|
|
|
+ // },
|
|
|
+ // showStyle: {
|
|
|
+ // size: 'width:380px;height:200px;',
|
|
|
+ // version: '原版',
|
|
|
+ // position: 'top:150px;right:0;',
|
|
|
+ // },
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // deviceType: '',
|
|
|
+ // moduleName: '其他模块A',
|
|
|
+ // pageType: 'balancePressHome',
|
|
|
+ // 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%',
|
|
|
+ // },
|
|
|
+ // ],
|
|
|
+ // },
|
|
|
+ // list: [
|
|
|
+ // {
|
|
|
+ // type: 'K',
|
|
|
+ // readFrom: 'windrect_ds_four.datalist[0]',
|
|
|
+ // items: [
|
|
|
+ // {
|
|
|
+ // label: '网络状态',
|
|
|
+ // value: '${readData.netStatus_str}',
|
|
|
+ // color: 'blue',
|
|
|
+ // },
|
|
|
+ // ],
|
|
|
+ // },
|
|
|
+ // ],
|
|
|
+ // to: '',
|
|
|
+ // },
|
|
|
+ // showStyle: {
|
|
|
+ // size: 'width:380px;height:230px;',
|
|
|
+ // version: '原版',
|
|
|
+ // position: 'top:360px;right:0;',
|
|
|
+ // },
|
|
|
+ // },
|
|
|
+ // ]);
|
|
|
+
|
|
|
+ // const { configs, fetchConfigs } = useInitConfigs();
|
|
|
+
|
|
|
+ const formData = ref({});
|
|
|
+ // 默认初始是第一行
|
|
|
+ const isAutoControl = ref('1');
|
|
|
+ const changeType = (isAutoControl) => {
|
|
|
+ isAutoControl;
|
|
|
+ //
|
|
|
+ };
|
|
|
+
|
|
|
+ function onSubmit() {
|
|
|
+ message.success('提交成功');
|
|
|
+ }
|
|
|
+
|
|
|
+ const { configs, fetchConfigs } = useInitConfigs();
|
|
|
+
|
|
|
+ onMounted(() => {
|
|
|
+ // getMonitor()
|
|
|
+ fetchConfigs('balancePressHome');
|
|
|
+ loading.value = true;
|
|
|
+ mountedThree().then(async () => {
|
|
|
+ await setModelType('balancePressBase'); //balancePressBase
|
|
|
+ loading.value = false;
|
|
|
+ timer = null;
|
|
|
+ await getMonitor(true);
|
|
|
+ play('startSmoke', 'top', 30, 'open', 0);
|
|
|
+ });
|
|
|
+ // loading.value = false;
|
|
|
+ // timer = null;
|
|
|
+ // getMonitor(true);
|
|
|
+ });
|
|
|
+
|
|
|
+ onUnmounted(() => {
|
|
|
+ destroy();
|
|
|
+ if (timer) {
|
|
|
+ clearTimeout(timer);
|
|
|
+ }
|
|
|
+ });
|
|
|
+</script>
|
|
|
+<style lang="less" scoped>
|
|
|
+ @import '/@/design/vent/modal.less';
|
|
|
+ @import '../../comment/less/workFace.less';
|
|
|
+ @ventSpace: zxm;
|
|
|
+ .monitor-container {
|
|
|
+ margin-top: 60px;
|
|
|
+ }
|
|
|
+</style>
|