|
@@ -6,9 +6,15 @@
|
|
<div class="box-bg table-box" style="margin-bottom: 10px">
|
|
<div class="box-bg table-box" style="margin-bottom: 10px">
|
|
<div>
|
|
<div>
|
|
<label style="color: var(--vent-font-color)">设备类型:</label>
|
|
<label style="color: var(--vent-font-color)">设备类型:</label>
|
|
- <Select @change="handleSensorChange" :options="deviceTypeOption"
|
|
|
|
- :fieldNames="{ label: 'label', value: 'value' }" v-model:value="deviceKind"
|
|
|
|
- style="width: 200px; margin-bottom: 5px; color: black" placeholder="请选择设备类型" :allowClear="true" />
|
|
|
|
|
|
+ <Select
|
|
|
|
+ @change="handleSensorChange"
|
|
|
|
+ :options="deviceTypeOption"
|
|
|
|
+ :fieldNames="{ label: 'label', value: 'value' }"
|
|
|
|
+ v-model:value="deviceKind"
|
|
|
|
+ style="width: 200px; margin-bottom: 5px; color: black"
|
|
|
|
+ placeholder="请选择设备类型"
|
|
|
|
+ :allowClear="true"
|
|
|
|
+ />
|
|
<template v-if="deviceKind === 'modelsensor_multi' && sysOrgCode != 'hnjmypmk'">
|
|
<template v-if="deviceKind === 'modelsensor_multi' && sysOrgCode != 'hnjmypmk'">
|
|
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXlsFns"> 导出</a-button>
|
|
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXlsFns"> 导出</a-button>
|
|
</template>
|
|
</template>
|
|
@@ -16,59 +22,101 @@
|
|
<template v-if="deviceKind === 'modelsensor_multi' && sysOrgCode === 'hnjmypmk'">
|
|
<template v-if="deviceKind === 'modelsensor_multi' && sysOrgCode === 'hnjmypmk'">
|
|
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXlsFn"> 导出</a-button>
|
|
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXlsFn"> 导出</a-button>
|
|
</template>
|
|
</template>
|
|
- <MonitorTable ref="SensorMonitorRef" :is-show-select="true" :columnsType="deviceKind + '_monitor'"
|
|
|
|
- :dataSource="dataSource" design-scope="modelsensor_monitor" @select-row="getSelectRow"
|
|
|
|
- :deviceType="deviceKind" :scroll="{ y: chartsColumns.length > 0 ? 600 : 600 }" size="''" title="传感器监测">
|
|
|
|
|
|
+ <MonitorTable
|
|
|
|
+ ref="SensorMonitorRef"
|
|
|
|
+ :is-show-select="true"
|
|
|
|
+ :columnsType="deviceKind + '_monitor'"
|
|
|
|
+ :dataSource="dataSource"
|
|
|
|
+ design-scope="modelsensor_monitor"
|
|
|
|
+ @select-row="getSelectRow"
|
|
|
|
+ :deviceType="deviceKind"
|
|
|
|
+ :scroll="{ y: chartsColumns.length > 0 ? 600 : 600 }"
|
|
|
|
+ size="''"
|
|
|
|
+ title="传感器监测"
|
|
|
|
+ >
|
|
<template #filterCell="{ column, record }">
|
|
<template #filterCell="{ column, record }">
|
|
<a-tag v-if="column.dataIndex === 'warnFlag'" :color="record.warnFlag == '0' ? 'green' : 'red'">{{
|
|
<a-tag v-if="column.dataIndex === 'warnFlag'" :color="record.warnFlag == '0' ? 'green' : 'red'">{{
|
|
record.warnFlag == '0' ? '正常' : '报警'
|
|
record.warnFlag == '0' ? '正常' : '报警'
|
|
}}</a-tag>
|
|
}}</a-tag>
|
|
- <a-tag v-if="column.dataIndex === 'netStatus'"
|
|
|
|
- :color="record.netStatus == '0' ? 'default' : 'green'">{{
|
|
|
|
- record.netStatus == '0' ? '断开' : '连接'
|
|
|
|
- }}</a-tag>
|
|
|
|
|
|
+ <a-tag v-if="column.dataIndex === 'netStatus'" :color="record.netStatus == '0' ? 'default' : 'green'">{{
|
|
|
|
+ record.netStatus == '0' ? '断开' : '连接'
|
|
|
|
+ }}</a-tag>
|
|
</template>
|
|
</template>
|
|
</MonitorTable>
|
|
</MonitorTable>
|
|
</div>
|
|
</div>
|
|
<!-- v-if="chartsColumns.length > 0" -->
|
|
<!-- v-if="chartsColumns.length > 0" -->
|
|
<div class="charts-box" v-if="false">
|
|
<div class="charts-box" v-if="false">
|
|
- <BarAndLine :chartsColumnsType="selectData.deviceType" xAxisPropType="readTime"
|
|
|
|
- :dataSource="detailDataSource" height="300px" :chartsColumns="chartsColumns" chartsType="detail"
|
|
|
|
- :option="echartsOption" @refresh="refreshEchatrs" />
|
|
|
|
|
|
+ <BarAndLine
|
|
|
|
+ :chartsColumnsType="selectData.deviceType"
|
|
|
|
+ xAxisPropType="readTime"
|
|
|
|
+ :dataSource="detailDataSource"
|
|
|
|
+ height="300px"
|
|
|
|
+ :chartsColumns="chartsColumns"
|
|
|
|
+ chartsType="detail"
|
|
|
|
+ :option="echartsOption"
|
|
|
|
+ @refresh="refreshEchatrs"
|
|
|
|
+ />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</a-tab-pane>
|
|
</a-tab-pane>
|
|
<a-tab-pane key="2" tab="历史数据">
|
|
<a-tab-pane key="2" tab="历史数据">
|
|
<div class="tab-item table-box box-bg padding-0" v-if="activeKey == '2'">
|
|
<div class="tab-item table-box box-bg padding-0" v-if="activeKey == '2'">
|
|
- <HistoryTable :columns-type="deviceKind" :device-type="deviceKind"
|
|
|
|
|
|
+ <HistoryTable
|
|
|
|
+ :columns-type="deviceKind"
|
|
|
|
+ :device-type="deviceKind"
|
|
:device-list-api="list.bind(null, { devicetype: selectData.deviceType })"
|
|
:device-list-api="list.bind(null, { devicetype: selectData.deviceType })"
|
|
- @change="historyDataSourceChange" designScope="modelsensor-history"
|
|
|
|
- :scroll="{ y: chartsColumns.length > 0 ? 300 : 600 }" />
|
|
|
|
|
|
+ @change="historyDataSourceChange"
|
|
|
|
+ designScope="modelsensor-history"
|
|
|
|
+ :scroll="{ y: chartsColumns.length > 0 ? 300 : 600 }"
|
|
|
|
+ />
|
|
<div class="charts-box" v-if="chartsColumns.length > 0">
|
|
<div class="charts-box" v-if="chartsColumns.length > 0">
|
|
- <BarAndLine :chartsColumnsType="selectData.deviceType" xAxisPropType="ttime"
|
|
|
|
- :dataSource="historyDataSource" height="300px" :chartsColumns="chartsColumns" chartsType="history"
|
|
|
|
- :option="echartsOption1" @refresh="refreshEchatrs" />
|
|
|
|
|
|
+ <BarAndLine
|
|
|
|
+ :chartsColumnsType="selectData.deviceType"
|
|
|
|
+ xAxisPropType="ttime"
|
|
|
|
+ :dataSource="historyDataSource"
|
|
|
|
+ height="300px"
|
|
|
|
+ :chartsColumns="chartsColumns"
|
|
|
|
+ chartsType="history"
|
|
|
|
+ :option="echartsOption1"
|
|
|
|
+ @refresh="refreshEchatrs"
|
|
|
|
+ />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</a-tab-pane>
|
|
</a-tab-pane>
|
|
- <a-tab-pane key="5" tab="近一月数据分析">
|
|
|
|
|
|
+ <a-tab-pane key="5" tab="近一月数据分析" v-if="!hasPermission('ventanalyAlarmAnalysis:noShow')">
|
|
<div class="tab-item box-bg" style="margin-bottom: 10px">
|
|
<div class="tab-item box-bg" style="margin-bottom: 10px">
|
|
<div style="margin-top: 20px">
|
|
<div style="margin-top: 20px">
|
|
<label style="color: var(--vent-font-color); margin-left: 20px">查询设备:</label>
|
|
<label style="color: var(--vent-font-color); margin-left: 20px">查询设备:</label>
|
|
- <Select :options="deviceTypeOption" :fieldNames="{ label: 'label', value: 'value' }"
|
|
|
|
- v-model:value="deviceKind" style="width: 200px; margin-bottom: 5px; color: black" placeholder="请选择传感器类型"
|
|
|
|
- :allowClear="true" />
|
|
|
|
- <Select @change="handleSensorChange1" :options="FxData"
|
|
|
|
- :fieldNames="{ label: 'strinstallpos', value: 'deviceID' }" v-model:value="strinstallpos"
|
|
|
|
- style="width: 200px; margin-bottom: 5px; margin-left: 5px; color: black" placeholder="请选择查询设备"
|
|
|
|
- :allowClear="true" />
|
|
|
|
- <a-button type="primary" style="margin-left: 5px" preIcon="ant-design:export-outlined"
|
|
|
|
- @click="onExportXlsFnFx">导出分析数据</a-button>
|
|
|
|
|
|
+ <Select
|
|
|
|
+ :options="deviceTypeOption"
|
|
|
|
+ :fieldNames="{ label: 'label', value: 'value' }"
|
|
|
|
+ v-model:value="deviceKind"
|
|
|
|
+ style="width: 200px; margin-bottom: 5px; color: black"
|
|
|
|
+ placeholder="请选择传感器类型"
|
|
|
|
+ :allowClear="true"
|
|
|
|
+ />
|
|
|
|
+ <Select
|
|
|
|
+ @change="handleSensorChange1"
|
|
|
|
+ :options="FxData"
|
|
|
|
+ :fieldNames="{ label: 'strinstallpos', value: 'deviceID' }"
|
|
|
|
+ v-model:value="strinstallpos"
|
|
|
|
+ style="width: 200px; margin-bottom: 5px; margin-left: 5px; color: black"
|
|
|
|
+ placeholder="请选择查询设备"
|
|
|
|
+ :allowClear="true"
|
|
|
|
+ />
|
|
|
|
+ <a-button type="primary" style="margin-left: 5px" preIcon="ant-design:export-outlined" @click="onExportXlsFnFx">导出分析数据</a-button>
|
|
</div>
|
|
</div>
|
|
<div class="charts-box" v-if="chartsColumnsFx.length > 0">
|
|
<div class="charts-box" v-if="chartsColumnsFx.length > 0">
|
|
- <BarAndLine :chartsColumnsType="selectData.deviceType" xAxisPropType="ttime"
|
|
|
|
- :dataSource="historyDataSource1" height="300px" :chartsColumns="chartsColumnsFx" chartsType="history"
|
|
|
|
- :option="echartsOption1" @refresh="refreshEchatrs" />
|
|
|
|
|
|
+ <BarAndLine
|
|
|
|
+ :chartsColumnsType="selectData.deviceType"
|
|
|
|
+ xAxisPropType="ttime"
|
|
|
|
+ :dataSource="historyDataSource1"
|
|
|
|
+ height="300px"
|
|
|
|
+ :chartsColumns="chartsColumnsFx"
|
|
|
|
+ chartsType="history"
|
|
|
|
+ :option="echartsOption1"
|
|
|
|
+ @refresh="refreshEchatrs"
|
|
|
|
+ />
|
|
</div>
|
|
</div>
|
|
<div class="charts-box" v-else> <span style="color: aliceblue"> 暂无数据 </span> </div>
|
|
<div class="charts-box" v-else> <span style="color: aliceblue"> 暂无数据 </span> </div>
|
|
</div>
|
|
</div>
|
|
@@ -97,443 +145,443 @@
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
-import BarAndLine from '/@/components/chart/BarAndLine.vue';
|
|
|
|
-import { Select } from 'ant-design-vue';
|
|
|
|
-import { onBeforeMount, computed, ref, onMounted, onUnmounted, toRaw, reactive, nextTick, unref } from 'vue';
|
|
|
|
-import MonitorTable from '../comment/MonitorTable.vue';
|
|
|
|
-import HistoryTable from '../comment/HistoryTable.vue';
|
|
|
|
-import AlarmHistoryTable from '../comment/AlarmHistoryTable.vue';
|
|
|
|
-import warnAnalysis from '../comment/warnAnalysis.vue';
|
|
|
|
-import { list, getTableList } from './sensor.api';
|
|
|
|
-import { deviceList } from '../../deviceManager/comment/pointTabel/point.api';
|
|
|
|
-import { getTableHeaderColumns } from '/@/hooks/web/useWebColumns';
|
|
|
|
-import { cloneDeep } from 'lodash-es';
|
|
|
|
-import { useMethods } from '/@/hooks/system/useMethods';
|
|
|
|
-import { useGlobSetting } from '/@/hooks/setting';
|
|
|
|
-import { useRouter } from 'vue-router';
|
|
|
|
-import { getDictItemsByCode } from '/@/utils/dict';
|
|
|
|
-import { device } from '../../gas/gasPipeNet/gasPipeNet.api';
|
|
|
|
-import { defHttp } from '/@/utils/http/axios';
|
|
|
|
-import { any, func } from 'vue-types';
|
|
|
|
-
|
|
|
|
-const router = useRouter();
|
|
|
|
-const { sysOrgCode } = useGlobSetting();
|
|
|
|
-const { exportXlsPostBlob, exportXlsGetBlob } = useMethods();
|
|
|
|
-const SensorMonitorRef = ref();
|
|
|
|
-const deviceBaseList = ref([]);
|
|
|
|
-const activeKey = ref('1');
|
|
|
|
-const deviceKind = ref('');
|
|
|
|
-const deviceId = ref('');
|
|
|
|
-const FxId = ref('');
|
|
|
|
-const IDvalue = ref('');
|
|
|
|
-const deviceTypeOption = ref([]);
|
|
|
|
-// 默认初始是第一行
|
|
|
|
-const selectRowIndex = ref(0);
|
|
|
|
-const dataSource = ref([]);
|
|
|
|
-interface DeviceItem {
|
|
|
|
- deviceID: string;
|
|
|
|
- strinstallpos: string;
|
|
|
|
-}
|
|
|
|
-const FxData = ref<any[]>([]);
|
|
|
|
-const detailDataSource = ref<any[]>([]);
|
|
|
|
-const historyDataSource = ref<any[]>([]);
|
|
|
|
-const historyDataSource1 = ref<any[]>([]);
|
|
|
|
-const chartsColumns = ref<any[]>([]);
|
|
|
|
-const chartsColumnsFx = ref<any[]>([]);
|
|
|
|
-const loading = ref(true);
|
|
|
|
-
|
|
|
|
-const echartsOption = {
|
|
|
|
- grid: {
|
|
|
|
- top: '20%',
|
|
|
|
- left: '10px',
|
|
|
|
- right: '5px',
|
|
|
|
- bottom: '5%',
|
|
|
|
- containLabel: true,
|
|
|
|
- },
|
|
|
|
- toolbox: {
|
|
|
|
- feature: {},
|
|
|
|
- },
|
|
|
|
-};
|
|
|
|
-const echartsOption1 = {
|
|
|
|
- grid: {
|
|
|
|
- top: '20%',
|
|
|
|
- left: '10px',
|
|
|
|
- right: '5px',
|
|
|
|
- bottom: '10%',
|
|
|
|
- containLabel: true,
|
|
|
|
- },
|
|
|
|
- toolbox: {
|
|
|
|
- feature: {},
|
|
|
|
- },
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-const selectData = reactive({
|
|
|
|
- strname: '',
|
|
|
|
- deviceType: '',
|
|
|
|
- deviceID: '',
|
|
|
|
-});
|
|
|
|
-
|
|
|
|
-const tabChange = (activeKeyVal) => {
|
|
|
|
- activeKey.value = activeKeyVal;
|
|
|
|
- detailDataSource.value = [];
|
|
|
|
- if (activeKeyVal == 1) {
|
|
|
|
- nextTick(() => {
|
|
|
|
- SensorMonitorRef.value.setSelectedRowKeys([selectData.deviceID]);
|
|
|
|
|
|
+ import BarAndLine from '/@/components/chart/BarAndLine.vue';
|
|
|
|
+ import { Select } from 'ant-design-vue';
|
|
|
|
+ import { onBeforeMount, computed, ref, onMounted, onUnmounted, toRaw, reactive, nextTick, unref } from 'vue';
|
|
|
|
+ import MonitorTable from '../comment/MonitorTable.vue';
|
|
|
|
+ import HistoryTable from '../comment/HistoryTable.vue';
|
|
|
|
+ import AlarmHistoryTable from '../comment/AlarmHistoryTable.vue';
|
|
|
|
+ import warnAnalysis from '../comment/warnAnalysis.vue';
|
|
|
|
+ import { list, getTableList } from './sensor.api';
|
|
|
|
+ import { deviceList } from '../../deviceManager/comment/pointTabel/point.api';
|
|
|
|
+ import { getTableHeaderColumns } from '/@/hooks/web/useWebColumns';
|
|
|
|
+ import { cloneDeep } from 'lodash-es';
|
|
|
|
+ import { useMethods } from '/@/hooks/system/useMethods';
|
|
|
|
+ import { useGlobSetting } from '/@/hooks/setting';
|
|
|
|
+ import { useRouter } from 'vue-router';
|
|
|
|
+ import { getDictItemsByCode } from '/@/utils/dict';
|
|
|
|
+ import { device } from '../../gas/gasPipeNet/gasPipeNet.api';
|
|
|
|
+ import { defHttp } from '/@/utils/http/axios';
|
|
|
|
+ import { usePermission } from '/@/hooks/web/usePermission';
|
|
|
|
+
|
|
|
|
+ const router = useRouter();
|
|
|
|
+ const { sysOrgCode } = useGlobSetting();
|
|
|
|
+ const { exportXlsPostBlob, exportXlsGetBlob } = useMethods();
|
|
|
|
+ const { hasPermission } = usePermission();
|
|
|
|
+ const SensorMonitorRef = ref();
|
|
|
|
+ const deviceBaseList = ref([]);
|
|
|
|
+ const activeKey = ref('1');
|
|
|
|
+ const deviceKind = ref('');
|
|
|
|
+ const deviceId = ref('');
|
|
|
|
+ const FxId = ref('');
|
|
|
|
+ const IDvalue = ref('');
|
|
|
|
+ const deviceTypeOption = ref([]);
|
|
|
|
+ // 默认初始是第一行
|
|
|
|
+ const selectRowIndex = ref(0);
|
|
|
|
+ const dataSource = ref([]);
|
|
|
|
+ interface DeviceItem {
|
|
|
|
+ deviceID: string;
|
|
|
|
+ strinstallpos: string;
|
|
|
|
+ }
|
|
|
|
+ const FxData = ref<any[]>([]);
|
|
|
|
+ const detailDataSource = ref<any[]>([]);
|
|
|
|
+ const historyDataSource = ref<any[]>([]);
|
|
|
|
+ const historyDataSource1 = ref<any[]>([]);
|
|
|
|
+ const chartsColumns = ref<any[]>([]);
|
|
|
|
+ const chartsColumnsFx = ref<any[]>([]);
|
|
|
|
+ const loading = ref(true);
|
|
|
|
+
|
|
|
|
+ const echartsOption = {
|
|
|
|
+ grid: {
|
|
|
|
+ top: '20%',
|
|
|
|
+ left: '10px',
|
|
|
|
+ right: '5px',
|
|
|
|
+ bottom: '5%',
|
|
|
|
+ containLabel: true,
|
|
|
|
+ },
|
|
|
|
+ toolbox: {
|
|
|
|
+ feature: {},
|
|
|
|
+ },
|
|
|
|
+ };
|
|
|
|
+ const echartsOption1 = {
|
|
|
|
+ grid: {
|
|
|
|
+ top: '20%',
|
|
|
|
+ left: '10px',
|
|
|
|
+ right: '5px',
|
|
|
|
+ bottom: '10%',
|
|
|
|
+ containLabel: true,
|
|
|
|
+ },
|
|
|
|
+ toolbox: {
|
|
|
|
+ feature: {},
|
|
|
|
+ },
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ const selectData = reactive({
|
|
|
|
+ strname: '',
|
|
|
|
+ deviceType: '',
|
|
|
|
+ deviceID: '',
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ const tabChange = (activeKeyVal) => {
|
|
|
|
+ activeKey.value = activeKeyVal;
|
|
|
|
+ detailDataSource.value = [];
|
|
|
|
+ if (activeKeyVal == 1) {
|
|
|
|
+ nextTick(() => {
|
|
|
|
+ SensorMonitorRef.value.setSelectedRowKeys([selectData.deviceID]);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ };
|
|
|
|
+ // https获取监测数据
|
|
|
|
+ let timer: null | NodeJS.Timeout = null;
|
|
|
|
+ const getMonitor = (flag?) => {
|
|
|
|
+ if (Object.prototype.toString.call(timer) === '[object Null]') {
|
|
|
|
+ timer = setTimeout(
|
|
|
|
+ async () => {
|
|
|
|
+ await getDataSource(deviceKind.value);
|
|
|
|
+ if (timer) {
|
|
|
|
+ timer = null;
|
|
|
|
+ }
|
|
|
|
+ getMonitor();
|
|
|
|
+ },
|
|
|
|
+ flag ? 0 : 1000
|
|
|
|
+ );
|
|
|
|
+ }
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ const getDataSource = async (devicetype) => {
|
|
|
|
+ const type = devicetype ? devicetype : 'modelsensor';
|
|
|
|
+ const res = await list({ devicetype: type, pagetype: 'normal' });
|
|
|
|
+ dataSource.value = res.msgTxt[0].datalist || [];
|
|
|
|
+ dataSource.value.map((data: any) => {
|
|
|
|
+ const readData = data.readData;
|
|
|
|
+ data = Object.assign(data, readData);
|
|
|
|
+ return data;
|
|
|
|
+ });
|
|
|
|
+ FxData.value = [];
|
|
|
|
+ dataSource.value.forEach((item: DeviceItem) => {
|
|
|
|
+ FxData.value.push({
|
|
|
|
+ strinstallpos: item.strinstallpos, // 无报错
|
|
|
|
+ deviceID: item.deviceID, // 无报错
|
|
|
|
+ });
|
|
|
|
+ IDvalue.value = item.strinstallpos;
|
|
|
|
+ });
|
|
|
|
+ const data: any = toRaw(dataSource.value[selectRowIndex.value]); //maxarea
|
|
|
|
+ Object.assign(selectData, data);
|
|
|
|
+
|
|
|
|
+ // if (chartsColumns.value.length <= 0 && selectData.deviceType) {
|
|
|
|
+ // handleChange(selectData.deviceType);
|
|
|
|
+ // }a
|
|
|
|
+
|
|
|
|
+ // 如果当前为监测tab
|
|
|
|
+ if (activeKey.value === '1') {
|
|
|
|
+ // const isHas = detailDataSource.value.find((item) => item['readTime'] === selectData['readTime']);
|
|
|
|
+ // // 获取选中数据
|
|
|
|
+ // if (!isHas) {
|
|
|
|
+ // if (detailDataSource.value.length < 15) {
|
|
|
|
+ // detailDataSource.value.push({ ...selectData });
|
|
|
|
+ // } else {
|
|
|
|
+ // detailDataSource.value.shift();
|
|
|
|
+ // detailDataSource.value.push({ ...selectData });
|
|
|
|
+ // }
|
|
|
|
+ // }
|
|
|
|
+ const dataList = cloneDeep(detailDataSource.value);
|
|
|
|
+ if (dataList.length < 15) {
|
|
|
|
+ dataList.push({ ...selectData });
|
|
|
|
+ } else {
|
|
|
|
+ dataList.shift();
|
|
|
|
+ dataList.push({ ...selectData });
|
|
|
|
+ }
|
|
|
|
+ detailDataSource.value = dataList;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (loading.value) {
|
|
|
|
+ loading.value = false;
|
|
|
|
+ }
|
|
|
|
+ return data;
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ const getSelectRow = (selectRow, index) => {
|
|
|
|
+ if (!selectRow) return;
|
|
|
|
+ selectRowIndex.value = index;
|
|
|
|
+ const baseData: any = deviceBaseList.value.find((baseData: any) => baseData.id === selectRow.deviceID);
|
|
|
|
+ Object.assign(selectData, selectRow, baseData);
|
|
|
|
+ if (selectData.deviceType) {
|
|
|
|
+ // if (timer) {
|
|
|
|
+ // clearTimeout(timer);
|
|
|
|
+ // timer = undefined;
|
|
|
|
+ // }
|
|
|
|
+ if (activeKey.value === '1') detailDataSource.value = [];
|
|
|
|
+ if (activeKey.value === '2') historyDataSource.value = [];
|
|
|
|
+ handleChange(selectData.deviceType);
|
|
|
|
+ }
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ // 获取设备基本信息列表
|
|
|
|
+ const getDeviceBaseList = () => {
|
|
|
|
+ getTableList({ pageSize: 1000 }).then((res) => {
|
|
|
|
+ deviceBaseList.value = res.records;
|
|
});
|
|
});
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ function handleChange(type) {
|
|
|
|
+ chartsColumns.value = getTableHeaderColumns(type + '_chart');
|
|
|
|
+ console.log('[ type ] >', type, chartsColumns.value);
|
|
|
|
+ }
|
|
|
|
+ function handleChangeFx(type) {
|
|
|
|
+ chartsColumnsFx.value = getTableHeaderColumns(type + '_chart-Fx');
|
|
|
|
+ console.log('[ type ] >', type, chartsColumnsFx.value);
|
|
|
|
+ }
|
|
|
|
+ function handleSensorChange(type) {
|
|
|
|
+ loading.value = true;
|
|
|
|
+ handleChange(type);
|
|
|
|
+ FxData.value = [];
|
|
|
|
+ timer = null;
|
|
|
|
+ dataSource.value = [];
|
|
|
|
+ detailDataSource.value = [];
|
|
}
|
|
}
|
|
-};
|
|
|
|
-// https获取监测数据
|
|
|
|
-let timer: null | NodeJS.Timeout = null;
|
|
|
|
-const getMonitor = (flag?) => {
|
|
|
|
- if (Object.prototype.toString.call(timer) === '[object Null]') {
|
|
|
|
- timer = setTimeout(
|
|
|
|
- async () => {
|
|
|
|
- await getDataSource(deviceKind.value);
|
|
|
|
- if (timer) {
|
|
|
|
- timer = null;
|
|
|
|
- }
|
|
|
|
- getMonitor();
|
|
|
|
|
|
+ async function handleSensorChange1(id) {
|
|
|
|
+ FxId.value = id;
|
|
|
|
+ const result = await defHttp.get({
|
|
|
|
+ url: '/safety/ventanalyMonitorData/getDeviceAvgData',
|
|
|
|
+ params: {
|
|
|
|
+ deviceId: id,
|
|
},
|
|
},
|
|
- flag ? 0 : 1000
|
|
|
|
- );
|
|
|
|
|
|
+ });
|
|
|
|
+ result.forEach((item) => {
|
|
|
|
+ handleChangeFx(item.deviceKind);
|
|
|
|
+ item.ttime = item.createTime;
|
|
|
|
+ });
|
|
|
|
+ historyDataSource1.value = result || [];
|
|
}
|
|
}
|
|
-};
|
|
|
|
-
|
|
|
|
-const getDataSource = async (devicetype) => {
|
|
|
|
- const type = devicetype ? devicetype : 'modelsensor';
|
|
|
|
- const res = await list({ devicetype: type, pagetype: 'normal' });
|
|
|
|
- dataSource.value = res.msgTxt[0].datalist || [];
|
|
|
|
- dataSource.value.map((data: any) => {
|
|
|
|
- const readData = data.readData;
|
|
|
|
- data = Object.assign(data, readData);
|
|
|
|
- return data;
|
|
|
|
- });
|
|
|
|
- FxData.value = [];
|
|
|
|
- dataSource.value.forEach((item: DeviceItem) => {
|
|
|
|
- FxData.value.push({
|
|
|
|
- strinstallpos: item.strinstallpos, // 无报错
|
|
|
|
- deviceID: item.deviceID, // 无报错
|
|
|
|
|
|
+
|
|
|
|
+ function refreshEchatrs() {
|
|
|
|
+ timer = null;
|
|
|
|
+ // getMonitor(true);
|
|
|
|
+ console.log('echarts 刷新');
|
|
|
|
+ }
|
|
|
|
+ function historyDataSourceChange(dataSource) {
|
|
|
|
+ historyDataSource.value = dataSource;
|
|
|
|
+ if (historyDataSource.value.length > 0) handleChange(historyDataSource.value[0].gdevicetype);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //导出
|
|
|
|
+ function onExportXlsFns() {
|
|
|
|
+ // 判断时间间隔和查询时间区间,数据量下载大时进行提示
|
|
|
|
+ const url = '/ventanaly-device/monitor/exportAllDeviceInfo';
|
|
|
|
+ return exportXlsPostBlob('多参数报表', url, {
|
|
|
|
+ devicetype: deviceKind.value,
|
|
|
|
+ pagetype: 'normal',
|
|
});
|
|
});
|
|
- IDvalue.value = item.strinstallpos;
|
|
|
|
- });
|
|
|
|
- const data: any = toRaw(dataSource.value[selectRowIndex.value]); //maxarea
|
|
|
|
- Object.assign(selectData, data);
|
|
|
|
-
|
|
|
|
- // if (chartsColumns.value.length <= 0 && selectData.deviceType) {
|
|
|
|
- // handleChange(selectData.deviceType);
|
|
|
|
- // }a
|
|
|
|
-
|
|
|
|
- // 如果当前为监测tab
|
|
|
|
- if (activeKey.value === '1') {
|
|
|
|
- // const isHas = detailDataSource.value.find((item) => item['readTime'] === selectData['readTime']);
|
|
|
|
- // // 获取选中数据
|
|
|
|
- // if (!isHas) {
|
|
|
|
- // if (detailDataSource.value.length < 15) {
|
|
|
|
- // detailDataSource.value.push({ ...selectData });
|
|
|
|
- // } else {
|
|
|
|
- // detailDataSource.value.shift();
|
|
|
|
- // detailDataSource.value.push({ ...selectData });
|
|
|
|
- // }
|
|
|
|
- // }
|
|
|
|
- const dataList = cloneDeep(detailDataSource.value);
|
|
|
|
- if (dataList.length < 15) {
|
|
|
|
- dataList.push({ ...selectData });
|
|
|
|
- } else {
|
|
|
|
- dataList.shift();
|
|
|
|
- dataList.push({ ...selectData });
|
|
|
|
- }
|
|
|
|
- detailDataSource.value = dataList;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- if (loading.value) {
|
|
|
|
- loading.value = false;
|
|
|
|
|
|
+ function onExportXlsFn() {
|
|
|
|
+ // 判断时间间隔和查询时间区间,数据量下载大时进行提示
|
|
|
|
+ const url = '/ventanaly-device/safety/reportInfo/expComReportByParam';
|
|
|
|
+ return exportXlsPostBlob('多参数报表', url, {
|
|
|
|
+ deviceKind: deviceKind.value.split('_')[0],
|
|
|
|
+ deviceType: deviceKind.value,
|
|
|
|
+ tempName: 'dcsbb',
|
|
|
|
+ });
|
|
}
|
|
}
|
|
- return data;
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-const getSelectRow = (selectRow, index) => {
|
|
|
|
- if (!selectRow) return;
|
|
|
|
- selectRowIndex.value = index;
|
|
|
|
- const baseData: any = deviceBaseList.value.find((baseData: any) => baseData.id === selectRow.deviceID);
|
|
|
|
- Object.assign(selectData, selectRow, baseData);
|
|
|
|
- if (selectData.deviceType) {
|
|
|
|
- // if (timer) {
|
|
|
|
- // clearTimeout(timer);
|
|
|
|
- // timer = undefined;
|
|
|
|
- // }
|
|
|
|
- if (activeKey.value === '1') detailDataSource.value = [];
|
|
|
|
- if (activeKey.value === '2') historyDataSource.value = [];
|
|
|
|
- handleChange(selectData.deviceType);
|
|
|
|
|
|
+ function onExportXlsFnFx() {
|
|
|
|
+ // 判断时间间隔和查询时间区间,数据量下载大时进行提示
|
|
|
|
+ const url = '/safety/ventanalyMonitorData/exportDeviceAvgData';
|
|
|
|
+ return exportXlsGetBlob('分析数据报表', url, {
|
|
|
|
+ deviceId: FxId.value,
|
|
|
|
+ });
|
|
}
|
|
}
|
|
-};
|
|
|
|
|
|
|
|
-// 获取设备基本信息列表
|
|
|
|
-const getDeviceBaseList = () => {
|
|
|
|
- getTableList({ pageSize: 1000 }).then((res) => {
|
|
|
|
- deviceBaseList.value = res.records;
|
|
|
|
- });
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-function handleChange(type) {
|
|
|
|
- chartsColumns.value = getTableHeaderColumns(type + '_chart');
|
|
|
|
- console.log('[ type ] >', type, chartsColumns.value);
|
|
|
|
-}
|
|
|
|
-function handleChangeFx(type) {
|
|
|
|
- chartsColumnsFx.value = getTableHeaderColumns(type + '_chart-Fx');
|
|
|
|
- console.log('[ type ] >', type, chartsColumnsFx.value);
|
|
|
|
-}
|
|
|
|
-function handleSensorChange(type) {
|
|
|
|
- loading.value = true;
|
|
|
|
- handleChange(type);
|
|
|
|
- FxData.value = [];
|
|
|
|
- timer = null;
|
|
|
|
- dataSource.value = [];
|
|
|
|
- detailDataSource.value = [];
|
|
|
|
-}
|
|
|
|
-async function handleSensorChange1(id) {
|
|
|
|
- FxId.value = id;
|
|
|
|
- const result = await defHttp.get({
|
|
|
|
- url: '/safety/ventanalyMonitorData/getDeviceAvgData',
|
|
|
|
- params: {
|
|
|
|
- deviceId: id,
|
|
|
|
- },
|
|
|
|
- });
|
|
|
|
- result.forEach((item) => {
|
|
|
|
- handleChangeFx(item.deviceKind);
|
|
|
|
- item.ttime = item.createTime;
|
|
|
|
- });
|
|
|
|
- historyDataSource1.value = result || [];
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-function refreshEchatrs() {
|
|
|
|
- timer = null;
|
|
|
|
- // getMonitor(true);
|
|
|
|
- console.log('echarts 刷新');
|
|
|
|
-}
|
|
|
|
-function historyDataSourceChange(dataSource) {
|
|
|
|
- historyDataSource.value = dataSource;
|
|
|
|
- if (historyDataSource.value.length > 0) handleChange(historyDataSource.value[0].gdevicetype);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-//导出
|
|
|
|
-function onExportXlsFns() {
|
|
|
|
- // 判断时间间隔和查询时间区间,数据量下载大时进行提示
|
|
|
|
- const url = '/ventanaly-device/monitor/exportAllDeviceInfo';
|
|
|
|
- return exportXlsPostBlob('多参数报表', url, {
|
|
|
|
- devicetype: deviceKind.value,
|
|
|
|
- pagetype: 'normal',
|
|
|
|
|
|
+ onBeforeMount(() => {
|
|
|
|
+ getDeviceBaseList();
|
|
});
|
|
});
|
|
-}
|
|
|
|
-
|
|
|
|
-function onExportXlsFn() {
|
|
|
|
- // 判断时间间隔和查询时间区间,数据量下载大时进行提示
|
|
|
|
- const url = '/ventanaly-device/safety/reportInfo/expComReportByParam';
|
|
|
|
- return exportXlsPostBlob('多参数报表', url, {
|
|
|
|
- deviceKind: deviceKind.value.split('_')[0],
|
|
|
|
- deviceType: deviceKind.value,
|
|
|
|
- tempName: 'dcsbb',
|
|
|
|
- });
|
|
|
|
-}
|
|
|
|
-function onExportXlsFnFx() {
|
|
|
|
- // 判断时间间隔和查询时间区间,数据量下载大时进行提示
|
|
|
|
- const url = '/safety/ventanalyMonitorData/exportDeviceAvgData';
|
|
|
|
- return exportXlsGetBlob('分析数据报表', url, {
|
|
|
|
- deviceId: FxId.value,
|
|
|
|
|
|
+
|
|
|
|
+ onMounted(async () => {
|
|
|
|
+ let dictName = 'modelsensorkind';
|
|
|
|
+ const route = unref(router.currentRoute);
|
|
|
|
+ if (route.name) {
|
|
|
|
+ const nameStrList = route.name.split('-');
|
|
|
|
+ if (nameStrList.length > 0 && nameStrList[nameStrList.length - 1] !== 'sensorMonitor') {
|
|
|
|
+ dictName = nameStrList[nameStrList.length - 1];
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ const res = getDictItemsByCode(dictName);
|
|
|
|
+ deviceTypeOption.value = res;
|
|
|
|
+ deviceKind.value = deviceTypeOption.value[0]['value'];
|
|
|
|
+ handleChange(deviceKind.value);
|
|
|
|
+ await getMonitor(true);
|
|
});
|
|
});
|
|
-}
|
|
|
|
-
|
|
|
|
-onBeforeMount(() => {
|
|
|
|
- getDeviceBaseList();
|
|
|
|
-});
|
|
|
|
-
|
|
|
|
-onMounted(async () => {
|
|
|
|
- let dictName = 'modelsensorkind';
|
|
|
|
- const route = unref(router.currentRoute);
|
|
|
|
- if (route.name) {
|
|
|
|
- const nameStrList = route.name.split('-');
|
|
|
|
- if (nameStrList.length > 0 && nameStrList[nameStrList.length - 1] !== 'sensorMonitor') {
|
|
|
|
- dictName = nameStrList[nameStrList.length - 1];
|
|
|
|
|
|
+ onUnmounted(() => {
|
|
|
|
+ if (timer) {
|
|
|
|
+ clearTimeout(timer);
|
|
|
|
+ timer = undefined;
|
|
}
|
|
}
|
|
- }
|
|
|
|
- const res = getDictItemsByCode(dictName);
|
|
|
|
- deviceTypeOption.value = res;
|
|
|
|
- deviceKind.value = deviceTypeOption.value[0]['value'];
|
|
|
|
- handleChange(deviceKind.value);
|
|
|
|
- await getMonitor(true);
|
|
|
|
-});
|
|
|
|
-onUnmounted(() => {
|
|
|
|
- if (timer) {
|
|
|
|
- clearTimeout(timer);
|
|
|
|
- timer = undefined;
|
|
|
|
- }
|
|
|
|
-});
|
|
|
|
|
|
+ });
|
|
</script>
|
|
</script>
|
|
<style lang="less" scoped>
|
|
<style lang="less" scoped>
|
|
-@import '/@/design/theme.less';
|
|
|
|
-@import '/@/design/vent/modal.less';
|
|
|
|
-
|
|
|
|
-.padding-0 {
|
|
|
|
- padding: 10px 0 !important;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.sensor-container {
|
|
|
|
- height: 100%;
|
|
|
|
- position: relative;
|
|
|
|
- top: 65px;
|
|
|
|
- padding: 10px;
|
|
|
|
- z-index: 999;
|
|
|
|
-
|
|
|
|
- // max-height: calc(100vh - 150px);
|
|
|
|
- .@{ventSpace}-tabs {
|
|
|
|
- max-height: calc(100% - 100px);
|
|
|
|
-
|
|
|
|
- .tab-item {
|
|
|
|
- max-height: calc(100% - 170px);
|
|
|
|
- overflow-y: auto;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ @import '/@/design/theme.less';
|
|
|
|
+ @import '/@/design/vent/modal.less';
|
|
|
|
|
|
- .title-text {
|
|
|
|
- position: absolute;
|
|
|
|
- top: -24px;
|
|
|
|
- left: 0;
|
|
|
|
- width: 100%;
|
|
|
|
- text-align: center;
|
|
|
|
- color: var(--vent-font-color);
|
|
|
|
|
|
+ .padding-0 {
|
|
|
|
+ padding: 10px 0 !important;
|
|
}
|
|
}
|
|
|
|
|
|
- .table-box {
|
|
|
|
- // height: calc(60% - 150px);
|
|
|
|
- height: 780px;
|
|
|
|
- padding: 20px 10px;
|
|
|
|
- overflow-y: auto;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- .box-bg {
|
|
|
|
- // border: 1px solid #4d7ad855;
|
|
|
|
- // border-radius: 2px;
|
|
|
|
- // // background-color: #001d3055;
|
|
|
|
- // -webkit-backdrop-filter: blur(8px);
|
|
|
|
- // backdrop-filter: blur(8px);
|
|
|
|
- // box-shadow: 0 0 10px #5984e055 inset;
|
|
|
|
- // background-color: #00b3ff12;
|
|
|
|
- padding-bottom: 10px;
|
|
|
|
- border: 1px solid #44d3ff70;
|
|
|
|
- border-radius: 2px;
|
|
|
|
- -webkit-backdrop-filter: blur(8px);
|
|
|
|
- box-shadow: 0 0 20px #44b4ff33 inset;
|
|
|
|
- background-color: #ffffff11;
|
|
|
|
- overflow-y: auto;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- .table-box-content {
|
|
|
|
- height: 430px;
|
|
|
|
- background-color: #ffffff03;
|
|
|
|
- border-bottom: 1px solid #44d3ff70;
|
|
|
|
- }
|
|
|
|
|
|
+ .sensor-container {
|
|
|
|
+ height: 100%;
|
|
|
|
+ position: relative;
|
|
|
|
+ top: 65px;
|
|
|
|
+ padding: 10px;
|
|
|
|
+ z-index: 999;
|
|
|
|
+
|
|
|
|
+ // max-height: calc(100vh - 150px);
|
|
|
|
+ .@{ventSpace}-tabs {
|
|
|
|
+ max-height: calc(100% - 100px);
|
|
|
|
+
|
|
|
|
+ .tab-item {
|
|
|
|
+ max-height: calc(100% - 170px);
|
|
|
|
+ overflow-y: auto;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
- .charts-box {
|
|
|
|
- height: 300px;
|
|
|
|
- padding: 5px 10px;
|
|
|
|
- margin-top: 10px;
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
|
|
+ .title-text {
|
|
|
|
+ position: absolute;
|
|
|
|
+ top: -24px;
|
|
|
|
+ left: 0;
|
|
|
|
+ width: 100%;
|
|
|
|
+ text-align: center;
|
|
|
|
+ color: var(--vent-font-color);
|
|
|
|
+ }
|
|
|
|
|
|
-:deep(.@{ventSpace}-tabs-tabpane-active) {
|
|
|
|
- height: 100%;
|
|
|
|
-}
|
|
|
|
|
|
+ .table-box {
|
|
|
|
+ // height: calc(60% - 150px);
|
|
|
|
+ height: 780px;
|
|
|
|
+ padding: 20px 10px;
|
|
|
|
+ overflow-y: auto;
|
|
|
|
+ }
|
|
|
|
|
|
-:deep(.@{ventSpace}-tabs-card) {
|
|
|
|
- .@{ventSpace}-tabs-tab {
|
|
|
|
- background: var(--vent-device-manager-control-btn-hover);
|
|
|
|
- border-color: #74e9fe;
|
|
|
|
- border-radius: 0%;
|
|
|
|
|
|
+ .box-bg {
|
|
|
|
+ // border: 1px solid #4d7ad855;
|
|
|
|
+ // border-radius: 2px;
|
|
|
|
+ // // background-color: #001d3055;
|
|
|
|
+ // -webkit-backdrop-filter: blur(8px);
|
|
|
|
+ // backdrop-filter: blur(8px);
|
|
|
|
+ // box-shadow: 0 0 10px #5984e055 inset;
|
|
|
|
+ // background-color: #00b3ff12;
|
|
|
|
+ padding-bottom: 10px;
|
|
|
|
+ border: 1px solid #44d3ff70;
|
|
|
|
+ border-radius: 2px;
|
|
|
|
+ -webkit-backdrop-filter: blur(8px);
|
|
|
|
+ box-shadow: 0 0 20px #44b4ff33 inset;
|
|
|
|
+ background-color: #ffffff11;
|
|
|
|
+ overflow-y: auto;
|
|
|
|
+ }
|
|
|
|
|
|
- &:hover {
|
|
|
|
- color: #64d5ff;
|
|
|
|
|
|
+ .table-box-content {
|
|
|
|
+ height: 430px;
|
|
|
|
+ background-color: #ffffff03;
|
|
|
|
+ border-bottom: 1px solid #44d3ff70;
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
|
|
- .@{ventSpace}-tabs-tab.@{ventSpace}-tabs-tab-active .@{ventSpace}-tabs-tab-btn {
|
|
|
|
- color: aqua;
|
|
|
|
|
|
+ .charts-box {
|
|
|
|
+ height: 300px;
|
|
|
|
+ padding: 5px 10px;
|
|
|
|
+ margin-top: 10px;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
- .@{ventSpace}-tabs-nav::before {
|
|
|
|
- border-color: #74e9fe;
|
|
|
|
|
|
+ :deep(.@{ventSpace}-tabs-tabpane-active) {
|
|
|
|
+ height: 100%;
|
|
}
|
|
}
|
|
|
|
|
|
- .@{ventSpace}-picker,
|
|
|
|
- .@{ventSpace}-select-selector {
|
|
|
|
- width: 100%;
|
|
|
|
- background: #00000017 !important;
|
|
|
|
- border: 1px solid @vent-form-item-border !important;
|
|
|
|
|
|
+ :deep(.@{ventSpace}-tabs-card) {
|
|
|
|
+ .@{ventSpace}-tabs-tab {
|
|
|
|
+ background: var(--vent-device-manager-control-btn-hover);
|
|
|
|
+ border-color: #74e9fe;
|
|
|
|
+ border-radius: 0%;
|
|
|
|
|
|
- input,
|
|
|
|
- .@{ventSpace}-select-selection-item,
|
|
|
|
- .@{ventSpace}-picker-suffix {
|
|
|
|
- color: #fff !important;
|
|
|
|
|
|
+ &:hover {
|
|
|
|
+ color: #64d5ff;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
- .@{ventSpace}-select-selection-placeholder {
|
|
|
|
- color: #b7b7b7 !important;
|
|
|
|
|
|
+ .@{ventSpace}-tabs-tab.@{ventSpace}-tabs-tab-active .@{ventSpace}-tabs-tab-btn {
|
|
|
|
+ color: aqua;
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
|
|
- .@{ventSpace}-pagination-next,
|
|
|
|
- .action,
|
|
|
|
- .@{ventSpace}-select-arrow,
|
|
|
|
- .@{ventSpace}-picker-separator {
|
|
|
|
- color: var(--vent-font-color) !important;
|
|
|
|
- }
|
|
|
|
|
|
+ .@{ventSpace}-tabs-nav::before {
|
|
|
|
+ border-color: #74e9fe;
|
|
|
|
+ }
|
|
|
|
|
|
- .@{ventSpace}-table-cell-row-hover {
|
|
|
|
- background: #264d8833 !important;
|
|
|
|
- }
|
|
|
|
|
|
+ .@{ventSpace}-picker,
|
|
|
|
+ .@{ventSpace}-select-selector {
|
|
|
|
+ width: 100%;
|
|
|
|
+ background: #00000017 !important;
|
|
|
|
+ border: 1px solid @vent-form-item-border !important;
|
|
|
|
+
|
|
|
|
+ input,
|
|
|
|
+ .@{ventSpace}-select-selection-item,
|
|
|
|
+ .@{ventSpace}-picker-suffix {
|
|
|
|
+ color: #fff !important;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .@{ventSpace}-select-selection-placeholder {
|
|
|
|
+ color: #b7b7b7 !important;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
- .@{ventSpace}-table-row-selected {
|
|
|
|
- background: #00c0a311 !important;
|
|
|
|
|
|
+ .@{ventSpace}-pagination-next,
|
|
|
|
+ .action,
|
|
|
|
+ .@{ventSpace}-select-arrow,
|
|
|
|
+ .@{ventSpace}-picker-separator {
|
|
|
|
+ color: var(--vent-font-color) !important;
|
|
|
|
+ }
|
|
|
|
|
|
- td {
|
|
|
|
- background-color: #00000000 !important;
|
|
|
|
|
|
+ .@{ventSpace}-table-cell-row-hover {
|
|
|
|
+ background: #264d8833 !important;
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
|
|
- .@{ventSpace}-table-thead {
|
|
|
|
- // background: linear-gradient(#004a8655 0%, #004a86aa 10%) !important;
|
|
|
|
- background: #3d9dd45d !important;
|
|
|
|
-
|
|
|
|
- &>tr>th,
|
|
|
|
- .@{ventSpace}-table-column-title {
|
|
|
|
- // color: #70f9fc !important;
|
|
|
|
- border-color: var(--vent-base-border) !important;
|
|
|
|
- border-left: none !important;
|
|
|
|
- border-right: none !important;
|
|
|
|
- padding: 7px;
|
|
|
|
|
|
+ .@{ventSpace}-table-row-selected {
|
|
|
|
+ background: #00c0a311 !important;
|
|
|
|
+
|
|
|
|
+ td {
|
|
|
|
+ background-color: #00000000 !important;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
|
|
- .@{ventSpace}-table-tbody {
|
|
|
|
- tr>td {
|
|
|
|
- padding: 12px;
|
|
|
|
|
|
+ .@{ventSpace}-table-thead {
|
|
|
|
+ // background: linear-gradient(#004a8655 0%, #004a86aa 10%) !important;
|
|
|
|
+ background: #3d9dd45d !important;
|
|
|
|
+
|
|
|
|
+ & > tr > th,
|
|
|
|
+ .@{ventSpace}-table-column-title {
|
|
|
|
+ // color: #70f9fc !important;
|
|
|
|
+ border-color: var(--vent-base-border) !important;
|
|
|
|
+ border-left: none !important;
|
|
|
|
+ border-right: none !important;
|
|
|
|
+ padding: 7px;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
|
|
- .@{ventSpace}-table-tbody>tr:hover.@{ventSpace}-table-row>td {
|
|
|
|
- background-color: #26648855 !important;
|
|
|
|
- }
|
|
|
|
|
|
+ .@{ventSpace}-table-tbody {
|
|
|
|
+ tr > td {
|
|
|
|
+ padding: 12px;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
- .jeecg-basic-table-row__striped {
|
|
|
|
|
|
+ .@{ventSpace}-table-tbody > tr:hover.@{ventSpace}-table-row > td {
|
|
|
|
+ background-color: #26648855 !important;
|
|
|
|
+ }
|
|
|
|
|
|
- // background: #97efff11 !important;
|
|
|
|
- td {
|
|
|
|
- background-color: #97efff11 !important;
|
|
|
|
|
|
+ .jeecg-basic-table-row__striped {
|
|
|
|
+ // background: #97efff11 !important;
|
|
|
|
+ td {
|
|
|
|
+ background-color: #97efff11 !important;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
|
|
- :deep(.vent-form) {
|
|
|
|
- .@{ventSpace}-select-dropdown {
|
|
|
|
- color: #000000 !important;
|
|
|
|
|
|
+ :deep(.vent-form) {
|
|
|
|
+ .@{ventSpace}-select-dropdown {
|
|
|
|
+ color: #000000 !important;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-}
|
|
|
|
</style>
|
|
</style>
|