|
@@ -0,0 +1,177 @@
|
|
|
+<template>
|
|
|
+ <a-spin tip="Loading..." :spinning="loading">
|
|
|
+ <div class="monitor-container">
|
|
|
+ <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';
|
|
|
+
|
|
|
+ const props = defineProps({
|
|
|
+ deviceId: {
|
|
|
+ type: String,
|
|
|
+ require: true,
|
|
|
+ },
|
|
|
+ });
|
|
|
+
|
|
|
+ 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;
|
|
|
+ return obj;
|
|
|
+ }, {});
|
|
|
+
|
|
|
+ console.log('debug', result);
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ // const configs: Config[] = [
|
|
|
+ // {
|
|
|
+ // deviceType: '',
|
|
|
+ // moduleName: 'CO与O2监测',
|
|
|
+ // pageType: '',
|
|
|
+ // moduleData: {
|
|
|
+ // header: {
|
|
|
+ // show: false,
|
|
|
+ // readFrom: '',
|
|
|
+ // selector: {
|
|
|
+ // show: false,
|
|
|
+ // value: '${strinstallpos}',
|
|
|
+ // },
|
|
|
+ // slot: {
|
|
|
+ // show: false,
|
|
|
+ // value: '',
|
|
|
+ // },
|
|
|
+ // },
|
|
|
+ // background: {
|
|
|
+ // show: false,
|
|
|
+ // type: 'image',
|
|
|
+ // link: '',
|
|
|
+ // },
|
|
|
+ // layout: {
|
|
|
+ // direction: 'column',
|
|
|
+ // items: [
|
|
|
+ // {
|
|
|
+ // name: 'complex_list',
|
|
|
+ // basis: '100%',
|
|
|
+ // },
|
|
|
+ // ],
|
|
|
+ // },
|
|
|
+ // complex_list: [
|
|
|
+ // {
|
|
|
+ // type: 'G',
|
|
|
+ // readFrom: 'fanlocal_steml_zj.datalist',
|
|
|
+ // mapFromData: true,
|
|
|
+ // items: [
|
|
|
+ // {
|
|
|
+ // title: 'datalist细则',
|
|
|
+ // contents: [
|
|
|
+ // {
|
|
|
+ // label: '阀门2开度',
|
|
|
+ // value: '${readData.Fan1fI}',
|
|
|
+ // color: 'blue',
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // label: '阀门3开度',
|
|
|
+ // value: '${readData.Fan1fI}',
|
|
|
+ // color: 'blue',
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // label: '阀门1开度',
|
|
|
+ // value: '${readData.Fan1fI}',
|
|
|
+ // color: 'blue',
|
|
|
+ // },
|
|
|
+ // ],
|
|
|
+ // },
|
|
|
+ // ],
|
|
|
+ // },
|
|
|
+ // ],
|
|
|
+ // chart: [],
|
|
|
+ // table: [],
|
|
|
+ // gallery: [],
|
|
|
+ // list: [],
|
|
|
+ // gallery_list: [],
|
|
|
+ // preset: [],
|
|
|
+ // to: '',
|
|
|
+ // },
|
|
|
+ // showStyle: {
|
|
|
+ // size: 'width:344px;height:490px;',
|
|
|
+ // version: '原版',
|
|
|
+ // position: 'top:80px;right:10px;',
|
|
|
+ // },
|
|
|
+ // },
|
|
|
+ // ];
|
|
|
+
|
|
|
+ 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);
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ 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>
|