|
@@ -4,40 +4,75 @@
|
|
|
<div class="content">
|
|
<div class="content">
|
|
|
<!-- 背景 -->
|
|
<!-- 背景 -->
|
|
|
<img v-if="background.show && background.type === 'image'" class="content__background" :src="background.link" />
|
|
<img v-if="background.show && background.type === 'image'" class="content__background" :src="background.link" />
|
|
|
- <video v-if="background.show && background.type === 'video' && background.isBoard" class="content__background"
|
|
|
|
|
- width="100%" autoplay loop muted disablepictureinpicture playsinline>
|
|
|
|
|
|
|
+ <video
|
|
|
|
|
+ v-if="background.show && background.type === 'video' && background.isBoard"
|
|
|
|
|
+ class="content__background"
|
|
|
|
|
+ width="100%"
|
|
|
|
|
+ autoplay
|
|
|
|
|
+ loop
|
|
|
|
|
+ muted
|
|
|
|
|
+ disablepictureinpicture
|
|
|
|
|
+ playsinline
|
|
|
|
|
+ >
|
|
|
<source :src="background.link" />
|
|
<source :src="background.link" />
|
|
|
Not Supportted Link Or Browser
|
|
Not Supportted Link Or Browser
|
|
|
</video>
|
|
</video>
|
|
|
- <video v-if="background.show && background.type === 'video' && !background.isBoard" class="content__background_1"
|
|
|
|
|
- width="100%" autoplay loop muted disablepictureinpicture playsinline>
|
|
|
|
|
|
|
+ <video
|
|
|
|
|
+ v-if="background.show && background.type === 'video' && !background.isBoard"
|
|
|
|
|
+ class="content__background_1"
|
|
|
|
|
+ width="100%"
|
|
|
|
|
+ autoplay
|
|
|
|
|
+ loop
|
|
|
|
|
+ muted
|
|
|
|
|
+ disablepictureinpicture
|
|
|
|
|
+ playsinline
|
|
|
|
|
+ >
|
|
|
<source :src="background.link" />
|
|
<source :src="background.link" />
|
|
|
Not Supportted Link Or Browser
|
|
Not Supportted Link Or Browser
|
|
|
</video>
|
|
</video>
|
|
|
<div class="flex w-full h-full" :style="{ flexDirection: layout.direction }">
|
|
<div class="flex w-full h-full" :style="{ flexDirection: layout.direction }">
|
|
|
- <div v-for="config in layoutConfig" :key="config.name"
|
|
|
|
|
- :style="{ flexBasis: config.basis, overflow: config.overflow ? 'auto' : 'hidden' }">
|
|
|
|
|
|
|
+ <div v-for="config in layoutConfig" :key="config.name" :style="{ flexBasis: config.basis, overflow: config.overflow ? 'auto' : 'hidden' }">
|
|
|
<!-- 告示板部分 -->
|
|
<!-- 告示板部分 -->
|
|
|
<template v-if="config.name === 'board'">
|
|
<template v-if="config.name === 'board'">
|
|
|
- <div v-if="config.pageType == 'vent_New'" style="padding-top: 11%"
|
|
|
|
|
- class="content__module content__module1 flex flex-justify-around flex-items-center flex-wrap">
|
|
|
|
|
- <MiniBoard v-for="item in config.items" :key="item.prop" :label="item.label" :value="item.value"
|
|
|
|
|
- :type="config.type" :layout="config.layout" />
|
|
|
|
|
|
|
+ <div
|
|
|
|
|
+ v-if="config.pageType == 'vent_New'"
|
|
|
|
|
+ style="padding-top: 11%"
|
|
|
|
|
+ class="content__module content__module1 flex flex-justify-around flex-items-center flex-wrap"
|
|
|
|
|
+ >
|
|
|
|
|
+ <MiniBoard
|
|
|
|
|
+ v-for="item in config.items"
|
|
|
|
|
+ :key="item.prop"
|
|
|
|
|
+ :label="item.label"
|
|
|
|
|
+ :value="item.value"
|
|
|
|
|
+ :type="config.type"
|
|
|
|
|
+ :layout="config.layout"
|
|
|
|
|
+ />
|
|
|
</div>
|
|
</div>
|
|
|
- <div v-else-if="config.pageType == 'New_fire'"
|
|
|
|
|
- class="content__module flex flex-justify-around flex-items-center flex-wrap">
|
|
|
|
|
- <MiniBoardNew v-for="item in config.items" :key="item.prop" :label="item.label" :value="item.value"
|
|
|
|
|
- :type="config.type" :layout="config.layout" />
|
|
|
|
|
|
|
+ <div v-else-if="config.pageType == 'New_fire'" class="content__module flex flex-justify-around flex-items-center flex-wrap">
|
|
|
|
|
+ <MiniBoardNew
|
|
|
|
|
+ v-for="item in config.items"
|
|
|
|
|
+ :key="item.prop"
|
|
|
|
|
+ :label="item.label"
|
|
|
|
|
+ :value="item.value"
|
|
|
|
|
+ :type="config.type"
|
|
|
|
|
+ :layout="config.layout"
|
|
|
|
|
+ />
|
|
|
</div>
|
|
</div>
|
|
|
<div v-else class="content__module flex flex-justify-around flex-items-center flex-wrap">
|
|
<div v-else class="content__module flex flex-justify-around flex-items-center flex-wrap">
|
|
|
- <MiniBoard v-for="item in config.items" :key="item.prop" :label="item.label" :value="item.value"
|
|
|
|
|
- :unit="item.unit" :type="config.type" :layout="config.layout" />
|
|
|
|
|
|
|
+ <MiniBoard
|
|
|
|
|
+ v-for="item in config.items"
|
|
|
|
|
+ :key="item.prop"
|
|
|
|
|
+ :label="item.label"
|
|
|
|
|
+ :value="item.value"
|
|
|
|
|
+ :unit="item.unit"
|
|
|
|
|
+ :type="config.type"
|
|
|
|
|
+ :layout="config.layout"
|
|
|
|
|
+ />
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
<!-- 图表部分,这部分通常需要填充,有告示板、Header等内容需要填充父级 -->
|
|
<!-- 图表部分,这部分通常需要填充,有告示板、Header等内容需要填充父级 -->
|
|
|
<template v-if="config.name === 'chart'">
|
|
<template v-if="config.name === 'chart'">
|
|
|
- <CustomChart v-if="config.pageType == 'New_dust'" class="content__module_dust" :chart-config="config.config"
|
|
|
|
|
- :chart-data="config.data" />
|
|
|
|
|
|
|
+ <CustomChart v-if="config.pageType == 'New_dust'" class="content__module_dust" :chart-config="config.config" :chart-data="config.data" />
|
|
|
<CustomChart v-else class="content__module" :chart-config="config.config" :chart-data="config.data" />
|
|
<CustomChart v-else class="content__module" :chart-config="config.config" :chart-data="config.data" />
|
|
|
</template>
|
|
</template>
|
|
|
<!-- 通常列表部分 -->
|
|
<!-- 通常列表部分 -->
|
|
@@ -61,8 +96,7 @@
|
|
|
</template>
|
|
</template>
|
|
|
<!-- 复杂列表部分 -->
|
|
<!-- 复杂列表部分 -->
|
|
|
<template v-if="config.name === 'gallery_list'">
|
|
<template v-if="config.name === 'gallery_list'">
|
|
|
- <GalleryList class="content__module" :type="config.type" :list-config="config.items"
|
|
|
|
|
- :gallery-config="config.galleryItems" />
|
|
|
|
|
|
|
+ <GalleryList class="content__module" :type="config.type" :list-config="config.items" :gallery-config="config.galleryItems" />
|
|
|
</template>
|
|
</template>
|
|
|
<!-- 复杂列表部分 -->
|
|
<!-- 复杂列表部分 -->
|
|
|
<template v-if="config.name === 'complex_list'">
|
|
<template v-if="config.name === 'complex_list'">
|
|
@@ -70,22 +104,28 @@
|
|
|
</template>
|
|
</template>
|
|
|
<!-- 表格部分,这部分通常是占一整个模块的 -->
|
|
<!-- 表格部分,这部分通常是占一整个模块的 -->
|
|
|
<template v-if="config.name === 'table'">
|
|
<template v-if="config.name === 'table'">
|
|
|
- <CustomTable class="content__module text-center overflow-auto" :type="config.type" :columns="config.columns"
|
|
|
|
|
- :auto-scroll="config.autoScroll" :data="config.data" />
|
|
|
|
|
|
|
+ <CustomTable
|
|
|
|
|
+ class="content__module text-center overflow-auto"
|
|
|
|
|
+ :type="config.type"
|
|
|
|
|
+ :columns="config.columns"
|
|
|
|
|
+ :auto-scroll="config.autoScroll"
|
|
|
|
|
+ :data="config.data"
|
|
|
|
|
+ />
|
|
|
</template>
|
|
</template>
|
|
|
<template v-if="config.name === 'tabs'">
|
|
<template v-if="config.name === 'tabs'">
|
|
|
- <CustomTabs class="content__module" :type="config.type" :tab-config="config.items"
|
|
|
|
|
- :overflow="config.overflow" />
|
|
|
|
|
|
|
+ <CustomTabs class="content__module" :type="config.type" :tab-config="config.items" :overflow="config.overflow" />
|
|
|
</template>
|
|
</template>
|
|
|
<template v-if="config.name === 'blast_delta'">
|
|
<template v-if="config.name === 'blast_delta'">
|
|
|
- <BlastDelta v-if="config.pageType === 'New_fire'" class="content__moduleFire" :pos-monitor="config.data"
|
|
|
|
|
- :canvasSize="{ width: 250, height: 200 }" />
|
|
|
|
|
- <BlastDelta v-else class="content__module" :pos-monitor="config.data"
|
|
|
|
|
- :canvasSize="{ width: 250, height: 200 }" />
|
|
|
|
|
|
|
+ <BlastDelta
|
|
|
|
|
+ v-if="config.pageType === 'New_fire'"
|
|
|
|
|
+ class="content__moduleFire"
|
|
|
|
|
+ :pos-monitor="config.data"
|
|
|
|
|
+ :canvasSize="{ width: 250, height: 200 }"
|
|
|
|
|
+ />
|
|
|
|
|
+ <BlastDelta v-else class="content__module" :pos-monitor="config.data" :canvasSize="{ width: 250, height: 200 }" />
|
|
|
</template>
|
|
</template>
|
|
|
<template v-if="config.name === 'qh_curve'">
|
|
<template v-if="config.name === 'qh_curve'">
|
|
|
- <QHCurve class="content__module" :mainfan="config.data" :fan1-prop="config.config.fan1Prop"
|
|
|
|
|
- :fan2-prop="config.config.fan2Prop" />
|
|
|
|
|
|
|
+ <QHCurve class="content__module" :mainfan="config.data" :fan1-prop="config.config.fan1Prop" :fan2-prop="config.config.fan2Prop" />
|
|
|
</template>
|
|
</template>
|
|
|
<template v-if="config.name === 'ai_chat'">
|
|
<template v-if="config.name === 'ai_chat'">
|
|
|
<AIChat class="content__module" />
|
|
<AIChat class="content__module" />
|
|
@@ -98,8 +138,13 @@
|
|
|
<SelectCs :devicedata="config.data" :config="config.config" />
|
|
<SelectCs :devicedata="config.data" :config="config.config" />
|
|
|
</template>
|
|
</template>
|
|
|
<template v-if="config.name === 'measure_detail'">
|
|
<template v-if="config.name === 'measure_detail'">
|
|
|
- <MeasureDetail class="content__module" :show-title="false" :composite-data="config.data"
|
|
|
|
|
- :topconfig="config.config.topconfig" :btnconfig="config.config.btnconfig" />
|
|
|
|
|
|
|
+ <MeasureDetail
|
|
|
|
|
+ class="content__module"
|
|
|
|
|
+ :show-title="false"
|
|
|
|
|
+ :composite-data="config.data"
|
|
|
|
|
+ :topconfig="config.config.topconfig"
|
|
|
|
|
+ :btnconfig="config.config.btnconfig"
|
|
|
|
|
+ />
|
|
|
</template>
|
|
</template>
|
|
|
<template v-if="config.name === 'partition'">
|
|
<template v-if="config.name === 'partition'">
|
|
|
<Partition class="content__module" :type="config.type" :label="config.label" :icon="config.icon" />
|
|
<Partition class="content__module" :type="config.type" :label="config.label" :icon="config.icon" />
|
|
@@ -111,8 +156,7 @@
|
|
|
<RadioLabel class="content__module" :type="config.config.type" :config="config.config" />
|
|
<RadioLabel class="content__module" :type="config.config.type" :config="config.config" />
|
|
|
</template>
|
|
</template>
|
|
|
<template v-if="config.name === 'button_list'">
|
|
<template v-if="config.name === 'button_list'">
|
|
|
- <ButtonList class="content__module" :type="config.config.type" :config="config.config"
|
|
|
|
|
- :buttonList="config.config.buttonList" />
|
|
|
|
|
|
|
+ <ButtonList class="content__module" :type="config.config.type" :config="config.config" :buttonList="config.config.buttonList" />
|
|
|
</template>
|
|
</template>
|
|
|
<template v-if="config.name === 'card_list'">
|
|
<template v-if="config.name === 'card_list'">
|
|
|
<cardList class="content__module" :cardData="config.data" />
|
|
<cardList class="content__module" :cardData="config.data" />
|
|
@@ -143,8 +187,7 @@
|
|
|
<gasDeviceStatusControl class="content__module" :option="config.config.option" :statusData="config.data" />
|
|
<gasDeviceStatusControl class="content__module" :option="config.config.option" :statusData="config.data" />
|
|
|
</template>
|
|
</template>
|
|
|
<template v-else-if="config.name === 'board_gas'">
|
|
<template v-else-if="config.name === 'board_gas'">
|
|
|
- <gasBoard class="content__module" :option="config.config.option" :type="config.config.type"
|
|
|
|
|
- :listData="config.data" />
|
|
|
|
|
|
|
+ <gasBoard class="content__module" :option="config.config.option" :type="config.config.type" :listData="config.data" />
|
|
|
</template>
|
|
</template>
|
|
|
<template v-else-if="config.name === 'gas_inject_card'">
|
|
<template v-else-if="config.name === 'gas_inject_card'">
|
|
|
<gasInjectCard class="content__module" :option="config.config.option" />
|
|
<gasInjectCard class="content__module" :option="config.config.option" />
|
|
@@ -156,8 +199,7 @@
|
|
|
<cameraModal class="content__module" :deviceId="config.data" />
|
|
<cameraModal class="content__module" :deviceId="config.data" />
|
|
|
</template>
|
|
</template>
|
|
|
<template v-if="config.name === 'gallery_new'">
|
|
<template v-if="config.name === 'gallery_new'">
|
|
|
- <CustomGalleryNew class="content__module" :type="config.config.type" :option="config.config.items"
|
|
|
|
|
- :galleryData="config.data" />
|
|
|
|
|
|
|
+ <CustomGalleryNew class="content__module" :type="config.config.type" :option="config.config.items" :galleryData="config.data" />
|
|
|
</template>
|
|
</template>
|
|
|
<template v-if="config.name === 'card_new'">
|
|
<template v-if="config.name === 'card_new'">
|
|
|
<ImageCardNew :option="config.config.items" :cardData="config.data"></ImageCardNew>
|
|
<ImageCardNew :option="config.config.items" :cardData="config.data"></ImageCardNew>
|
|
@@ -171,18 +213,30 @@
|
|
|
<template v-if="config.name === 'long_list'">
|
|
<template v-if="config.name === 'long_list'">
|
|
|
<LongList></LongList>
|
|
<LongList></LongList>
|
|
|
</template>
|
|
</template>
|
|
|
- <template v-if="config.name === 'long_list1'">
|
|
|
|
|
|
|
+ <template v-if="config.name === 'long_list1'">
|
|
|
<LongList1></LongList1>
|
|
<LongList1></LongList1>
|
|
|
</template>
|
|
</template>
|
|
|
- <template v-if="config.name === 'long_list2'">
|
|
|
|
|
|
|
+ <template v-if="config.name === 'long_list2'">
|
|
|
<LongList2></LongList2>
|
|
<LongList2></LongList2>
|
|
|
</template>
|
|
</template>
|
|
|
- <template v-if="config.name === 'search_table'">
|
|
|
|
|
|
|
+ <template v-if="config.name === 'search_table'">
|
|
|
<SearchTable></SearchTable>
|
|
<SearchTable></SearchTable>
|
|
|
</template>
|
|
</template>
|
|
|
<template v-if="config.name === 'mixed_warn'">
|
|
<template v-if="config.name === 'mixed_warn'">
|
|
|
<MixedWarn></MixedWarn>
|
|
<MixedWarn></MixedWarn>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
+ <template v-if="config.name === 'rule_table'">
|
|
|
|
|
+ <RuleTable></RuleTable>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ <template v-if="config.name === 'link_log'">
|
|
|
|
|
+ <LinkLog></LinkLog>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ <template v-if="config.name === 'rule_num'">
|
|
|
|
|
+ <RuleNum></RuleNum>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ <template v-if="config.name === 'link_edit'">
|
|
|
|
|
+ <LinkRuleEdit></LinkRuleEdit>
|
|
|
|
|
+ </template>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -223,27 +277,32 @@ import RadioLabel from './preset/radioLabel.vue';
|
|
|
import ButtonList from './preset/buttonList.vue';
|
|
import ButtonList from './preset/buttonList.vue';
|
|
|
import cardList from './preset/cardList.vue';
|
|
import cardList from './preset/cardList.vue';
|
|
|
import generalList from './preset/generalList.vue';
|
|
import generalList from './preset/generalList.vue';
|
|
|
-import upDown from './preset/upDown.vue'
|
|
|
|
|
-import gasInjectChart from './preset/gasInjectChart.vue'
|
|
|
|
|
-import gasInjectList from './preset/gasInjectList.vue'
|
|
|
|
|
-import gasZyChart from './preset/gasZyChart.vue'
|
|
|
|
|
-import gasZyList from './preset/gasZyList.vue'
|
|
|
|
|
-import gasWarnChart from './preset/gasWarnChart.vue'
|
|
|
|
|
-import gasWarnList from './preset/gasWarnList.vue'
|
|
|
|
|
-import gasDeviceStatusControl from './preset/gasDeviceStatusControl.vue'
|
|
|
|
|
-import gasBoard from './preset/gasBoard.vue'
|
|
|
|
|
-import gasInjectCard from './preset/gasInjectCard.vue'
|
|
|
|
|
-import cameraModal from './preset/cameraModal.vue'
|
|
|
|
|
-import echartLine from './preset/echartLine.vue'
|
|
|
|
|
-import CustomGalleryNew from './preset/CustomGalleryNew.vue'
|
|
|
|
|
-import ImageCardNew from './preset/ImageCardNew.vue'
|
|
|
|
|
-import BtnListNew from './preset/BtnListNew.vue'
|
|
|
|
|
-import OperateNew from './preset/OperateNew.vue'
|
|
|
|
|
-import LongList from './preset/LongList.vue'
|
|
|
|
|
-import LongList1 from './preset/LongList1.vue'
|
|
|
|
|
-import LongList2 from './preset/LongList2.vue'
|
|
|
|
|
-import SearchTable from './preset/SearchTable.vue'
|
|
|
|
|
-import MixedWarn from './preset/MixedWarn.vue'
|
|
|
|
|
|
|
+import upDown from './preset/upDown.vue';
|
|
|
|
|
+import gasInjectChart from './preset/gasInjectChart.vue';
|
|
|
|
|
+import gasInjectList from './preset/gasInjectList.vue';
|
|
|
|
|
+import gasZyChart from './preset/gasZyChart.vue';
|
|
|
|
|
+import gasZyList from './preset/gasZyList.vue';
|
|
|
|
|
+import gasWarnChart from './preset/gasWarnChart.vue';
|
|
|
|
|
+import gasWarnList from './preset/gasWarnList.vue';
|
|
|
|
|
+import gasDeviceStatusControl from './preset/gasDeviceStatusControl.vue';
|
|
|
|
|
+import gasBoard from './preset/gasBoard.vue';
|
|
|
|
|
+import gasInjectCard from './preset/gasInjectCard.vue';
|
|
|
|
|
+import cameraModal from './preset/cameraModal.vue';
|
|
|
|
|
+import echartLine from './preset/echartLine.vue';
|
|
|
|
|
+import CustomGalleryNew from './preset/CustomGalleryNew.vue';
|
|
|
|
|
+import ImageCardNew from './preset/ImageCardNew.vue';
|
|
|
|
|
+import BtnListNew from './preset/BtnListNew.vue';
|
|
|
|
|
+import OperateNew from './preset/OperateNew.vue';
|
|
|
|
|
+import LongList from '../../../../../../LongList.vue';
|
|
|
|
|
+import LongList1 from './preset/LongList1.vue';
|
|
|
|
|
+import LongList2 from './preset/LongList2.vue';
|
|
|
|
|
+import SearchTable from './preset/SearchTable.vue';
|
|
|
|
|
+import RuleTable from './preset/ruleTable.vue';
|
|
|
|
|
+import MixedWarn from './preset/MixedWarn.vue';
|
|
|
|
|
+import LinkLog from './preset/linkLog.vue';
|
|
|
|
|
+import RuleNum from './preset/ruleNum.vue';
|
|
|
|
|
+import LinkRuleEdit from './preset/linkRuleEdit.vue';
|
|
|
|
|
+import linkFlowChart from './preset/linkFlowChart.vue';
|
|
|
// import FIreWarn from './preset/FIreWarn.vue';
|
|
// import FIreWarn from './preset/FIreWarn.vue';
|
|
|
// import FIreControl from './preset/FIreControl.vue';
|
|
// import FIreControl from './preset/FIreControl.vue';
|
|
|
|
|
|
|
@@ -255,8 +314,6 @@ const props = defineProps<{
|
|
|
|
|
|
|
|
const { background, layout } = props.moduleData;
|
|
const { background, layout } = props.moduleData;
|
|
|
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
// 获取当原始配置带 items 项时的最终 items 配置
|
|
// 获取当原始配置带 items 项时的最终 items 配置
|
|
|
function getItems(raw, items: CommonItem[]) {
|
|
function getItems(raw, items: CommonItem[]) {
|
|
|
return items.map((i) => {
|
|
return items.map((i) => {
|
|
@@ -507,7 +564,6 @@ const layoutConfig = computed(() => {
|
|
|
return arr;
|
|
return arr;
|
|
|
}, []);
|
|
}, []);
|
|
|
});
|
|
});
|
|
|
-
|
|
|
|
|
</script>
|
|
</script>
|
|
|
<style lang="less" scoped>
|
|
<style lang="less" scoped>
|
|
|
@import '@/design/theme.less';
|
|
@import '@/design/theme.less';
|