|
|
@@ -3,26 +3,26 @@
|
|
|
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
|
|
|
<el-form-item label="仓库名称" prop="houseName">
|
|
|
<el-input
|
|
|
- v-model="queryParams.houseName"
|
|
|
- placeholder="请输入仓库名称"
|
|
|
- clearable
|
|
|
- @keyup.enter="handleQuery"
|
|
|
+ v-model="queryParams.houseName"
|
|
|
+ placeholder="请输入仓库名称"
|
|
|
+ clearable
|
|
|
+ @keyup.enter="handleQuery"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="仓库编码" prop="houseCode">
|
|
|
+ <!-- <el-form-item label="仓库编码" prop="houseCode">-->
|
|
|
+ <!-- <el-input-->
|
|
|
+ <!-- v-model="queryParams.houseCode"-->
|
|
|
+ <!-- placeholder="请输入仓库编码"-->
|
|
|
+ <!-- clearable-->
|
|
|
+ <!-- @keyup.enter="handleQuery"-->
|
|
|
+ <!-- />-->
|
|
|
+ <!-- </el-form-item>-->
|
|
|
+ <el-form-item label="网关名称" prop="sensorName">
|
|
|
<el-input
|
|
|
- v-model="queryParams.houseCode"
|
|
|
- placeholder="请输入仓库编码"
|
|
|
- clearable
|
|
|
- @keyup.enter="handleQuery"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="传感器名称" prop="sensorName">
|
|
|
- <el-input
|
|
|
- v-model="queryParams.sensorName"
|
|
|
- placeholder="请输入传感器名称"
|
|
|
- clearable
|
|
|
- @keyup.enter="handleQuery"
|
|
|
+ v-model="queryParams.sensorName"
|
|
|
+ placeholder="请输入传感器网关名称"
|
|
|
+ clearable
|
|
|
+ @keyup.enter="handleQuery"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
|
@@ -34,109 +34,134 @@
|
|
|
<el-row :gutter="10" class="mb8">
|
|
|
<el-col :span="1.5">
|
|
|
<el-button
|
|
|
- type="primary"
|
|
|
- plain
|
|
|
- icon="Plus"
|
|
|
- @click="handleAdd"
|
|
|
- v-hasPermi="['biz:sensorConfig:add']"
|
|
|
- >新增</el-button>
|
|
|
+ type="primary"
|
|
|
+ plain
|
|
|
+ icon="Plus"
|
|
|
+ @click="handleAdd"
|
|
|
+ >新增
|
|
|
+ </el-button>
|
|
|
</el-col>
|
|
|
<el-col :span="1.5">
|
|
|
<el-button
|
|
|
- type="success"
|
|
|
- plain
|
|
|
- icon="Edit"
|
|
|
- :disabled="single"
|
|
|
- @click="handleUpdate"
|
|
|
- v-hasPermi="['biz:sensorConfig:edit']"
|
|
|
- >修改</el-button>
|
|
|
+ type="success"
|
|
|
+ plain
|
|
|
+ icon="Edit"
|
|
|
+ :disabled="single"
|
|
|
+ @click="handleUpdate"
|
|
|
+ >修改
|
|
|
+ </el-button>
|
|
|
</el-col>
|
|
|
<el-col :span="1.5">
|
|
|
<el-button
|
|
|
- type="danger"
|
|
|
- plain
|
|
|
- icon="Delete"
|
|
|
- :disabled="multiple"
|
|
|
- @click="handleDelete"
|
|
|
- v-hasPermi="['biz:sensorConfig:remove']"
|
|
|
- >删除</el-button>
|
|
|
- </el-col>
|
|
|
- <el-col :span="1.5">
|
|
|
- <el-button
|
|
|
- type="warning"
|
|
|
- plain
|
|
|
- icon="Download"
|
|
|
- @click="handleExport"
|
|
|
- v-hasPermi="['biz:sensorConfig:export']"
|
|
|
- >导出</el-button>
|
|
|
+ type="danger"
|
|
|
+ plain
|
|
|
+ icon="Delete"
|
|
|
+ :disabled="multiple"
|
|
|
+ @click="handleDelete"
|
|
|
+ >删除
|
|
|
+ </el-button>
|
|
|
</el-col>
|
|
|
+ <!-- <el-col :span="1.5">-->
|
|
|
+ <!-- <el-button-->
|
|
|
+ <!-- type="warning"-->
|
|
|
+ <!-- plain-->
|
|
|
+ <!-- icon="Download"-->
|
|
|
+ <!-- @click="handleExport"-->
|
|
|
+ <!-- v-hasPermi="['biz:sensorConfig:export']"-->
|
|
|
+ <!-- >导出</el-button>-->
|
|
|
+ <!-- </el-col>-->
|
|
|
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
|
|
</el-row>
|
|
|
|
|
|
<el-table v-loading="loading" :data="sensorConfigList" @selection-change="handleSelectionChange">
|
|
|
- <el-table-column type="selection" width="55" align="center" />
|
|
|
- <el-table-column label="传感器ID" align="center" prop="sensorId" />
|
|
|
- <el-table-column label="仓库ID" align="center" prop="houseId" />
|
|
|
- <el-table-column label="仓库名称" align="center" prop="houseName" />
|
|
|
- <el-table-column label="仓库编码" align="center" prop="houseCode" />
|
|
|
- <el-table-column label="传感器名称" align="center" prop="sensorName" />
|
|
|
- <el-table-column label="订阅地址" align="center" prop="subscribAddr" />
|
|
|
- <el-table-column label="订阅主题" align="center" prop="topic" />
|
|
|
- <el-table-column label="烟雾阈值" align="center" prop="smokeThreshold" />
|
|
|
- <el-table-column label="温度阈值" align="center" prop="tmpThreshold" />
|
|
|
- <el-table-column label="温度阈值" align="center" prop="rhThreshold" />
|
|
|
- <el-table-column label="发布流程间隔时间" align="center" prop="alarmTime" />
|
|
|
- <el-table-column label="上次发布流程时间" align="center" prop="lastTime" width="180">
|
|
|
+ <el-table-column type="selection" width="55" align="center"/>
|
|
|
+ <!-- <el-table-column label="传感器ID" align="center" prop="sensorId" />-->
|
|
|
+ <!-- <el-table-column label="仓库ID" align="center" prop="houseId" />-->
|
|
|
+ <el-table-column label="仓库名称" align="center" prop="houseName" width="250px"/>
|
|
|
+ <!-- <el-table-column label="仓库编码" align="center" prop="houseCode" />-->
|
|
|
+ <el-table-column label="网关名称" align="center" prop="sensorName"/>
|
|
|
+ <el-table-column label="订阅地址" align="center" prop="subscribAddr"/>
|
|
|
+ <el-table-column label="订阅主题" align="center" prop="topic"/>
|
|
|
+ <el-table-column label="烟雾阈值" align="center" prop="smokeThreshold" width="80px"/>
|
|
|
+ <el-table-column label="温度阈值" align="center" prop="tmpThreshold" width="80px"/>
|
|
|
+ <el-table-column label="湿度阈值" align="center" prop="rhThreshold" width="80px"/>
|
|
|
+ <el-table-column label="告警间隔分钟" align="center" prop="alarmTime" width="80px"/>
|
|
|
+ <el-table-column label="上次告警时间" align="center" prop="lastTime" width="180">
|
|
|
<template #default="scope">
|
|
|
- <span>{{ parseTime(scope.row.lastTime, '{y}-{m}-{d}') }}</span>
|
|
|
+ <span>{{ parseTime(scope.row.lastTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
|
|
<template #default="scope">
|
|
|
- <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['biz:sensorConfig:edit']">修改</el-button>
|
|
|
- <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['biz:sensorConfig:remove']">删除</el-button>
|
|
|
+ <el-button link type="primary" icon="List" @click="handleList(scope.row)"
|
|
|
+ >历史数据
|
|
|
+ </el-button>
|
|
|
+ <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
|
|
|
+ >修改
|
|
|
+ </el-button>
|
|
|
+ <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"
|
|
|
+ >删除
|
|
|
+ </el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
-
|
|
|
+
|
|
|
<pagination
|
|
|
- v-show="total>0"
|
|
|
- :total="total"
|
|
|
- v-model:page="queryParams.pageNum"
|
|
|
- v-model:limit="queryParams.pageSize"
|
|
|
- @pagination="getList"
|
|
|
+ v-show="total>0"
|
|
|
+ :total="total"
|
|
|
+ v-model:page="queryParams.pageNum"
|
|
|
+ v-model:limit="queryParams.pageSize"
|
|
|
+ @pagination="getList"
|
|
|
/>
|
|
|
|
|
|
<!-- 添加或修改传感器网关配置对话框 -->
|
|
|
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
|
|
|
- <el-form ref="sensorConfigRef" :model="form" :rules="rules" label-width="80px">
|
|
|
+ <el-form ref="sensorConfigRef" :model="form" :rules="rules" label-width="120px">
|
|
|
<el-form-item label="仓库名称" prop="houseName">
|
|
|
- <el-input v-model="form.houseName" placeholder="请输入仓库名称" />
|
|
|
+ <el-select v-model="form.houseName" placeholder="请选择仓库名称" clearable filterable
|
|
|
+ @change="handleHouseChange">
|
|
|
+ <el-option
|
|
|
+ v-for="item in houseConfigList"
|
|
|
+ :key="item.houseName"
|
|
|
+ :label="item.houseName"
|
|
|
+ :value="item.houseId"
|
|
|
+ >
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="仓库编码" prop="houseCode">
|
|
|
- <el-input v-model="form.houseCode" placeholder="请输入仓库编码" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="传感器名称" prop="sensorName">
|
|
|
- <el-input v-model="form.sensorName" placeholder="请输入传感器名称" />
|
|
|
+ <el-form-item label="网关名称" prop="sensorName">
|
|
|
+ <el-input v-model="form.sensorName" placeholder="请输入传感器网关名称"/>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="订阅地址" prop="subscribAddr">
|
|
|
- <el-input v-model="form.subscribAddr" placeholder="请输入订阅地址" />
|
|
|
+ <el-input v-model="form.subscribAddr" placeholder="请输入订阅地址"/>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="订阅主题" prop="topic">
|
|
|
- <el-input v-model="form.topic" placeholder="请输入订阅主题" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="烟雾阈值" prop="smokeThreshold">
|
|
|
- <el-input v-model="form.smokeThreshold" placeholder="请输入烟雾阈值" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="温度阈值" prop="tmpThreshold">
|
|
|
- <el-input v-model="form.tmpThreshold" placeholder="请输入温度阈值" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="温度阈值" prop="rhThreshold">
|
|
|
- <el-input v-model="form.rhThreshold" placeholder="请输入温度阈值" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="发布流程间隔时间" prop="alarmTime">
|
|
|
- <el-input v-model="form.alarmTime" placeholder="请输入发布流程间隔时间" />
|
|
|
+ <el-input v-model="form.topic" placeholder="请输入订阅主题"/>
|
|
|
</el-form-item>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="告警间隔分钟" prop="alarmTime">
|
|
|
+ <el-input-number v-model="form.alarmTime" placeholder="告警间隔分钟" :min="10" controls-position="right"
|
|
|
+ style="width: 100%"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="烟雾阈值" prop="smokeThreshold">
|
|
|
+ <el-input-number v-model="form.smokeThreshold" placeholder="请输入烟雾阈值" :min="1"
|
|
|
+ controls-position="right"
|
|
|
+ style="width: 100%"/>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+
|
|
|
+ <el-form-item label="温度阈值" prop="tmpThreshold">
|
|
|
+ <el-input-number v-model="form.tmpThreshold" placeholder="请输入温度阈值" :precision="1" :step="0.1"
|
|
|
+ controls-position="right" style="width: 100%"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="湿度阈值" prop="rhThreshold">
|
|
|
+ <el-input-number v-model="form.rhThreshold" placeholder="请输入湿度阈值" :precision="1" :step="0.1"
|
|
|
+ controls-position="right" style="width: 100%"/>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
</el-form>
|
|
|
<template #footer>
|
|
|
<div class="dialog-footer">
|
|
|
@@ -145,13 +170,32 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
+
|
|
|
+ <!-- 历史数据图表对话框 -->
|
|
|
+ <el-dialog :title="chartTitle" v-model="chartOpen" width="800px" append-to-body>
|
|
|
+ <div ref="chartRef" style="width: 100%; height: 400px;"></div>
|
|
|
+ <template #footer>
|
|
|
+ <div class="dialog-footer">
|
|
|
+ <el-button @click="chartOpen = false">关闭</el-button>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script setup name="SensorConfig">
|
|
|
-import { listSensorConfig, getSensorConfig, delSensorConfig, addSensorConfig, updateSensorConfig } from "@/api/biz/sensorConfig";
|
|
|
+import {
|
|
|
+ addSensorConfig,
|
|
|
+ delSensorConfig,
|
|
|
+ getSensorConfig,
|
|
|
+ listSensorConfig,
|
|
|
+ updateSensorConfig,
|
|
|
+ listRecord
|
|
|
+} from "@/api/biz/sensorConfig";
|
|
|
+import {listHouseConfig} from "@/api/biz/houseConfig";
|
|
|
+import * as echarts from 'echarts';
|
|
|
|
|
|
-const { proxy } = getCurrentInstance();
|
|
|
+const {proxy} = getCurrentInstance();
|
|
|
|
|
|
const sensorConfigList = ref([]);
|
|
|
const open = ref(false);
|
|
|
@@ -162,45 +206,92 @@ const single = ref(true);
|
|
|
const multiple = ref(true);
|
|
|
const total = ref(0);
|
|
|
const title = ref("");
|
|
|
-
|
|
|
+const chartTitle = ref("");
|
|
|
+const houseConfigList = ref(undefined);
|
|
|
+const chartOpen = ref(false); // 控制图表对话框显示
|
|
|
+const chartRef = ref(null); // 图表容器引用
|
|
|
const data = reactive({
|
|
|
form: {},
|
|
|
queryParams: {
|
|
|
pageNum: 1,
|
|
|
pageSize: 10,
|
|
|
+ houseId: null,
|
|
|
houseName: null,
|
|
|
houseCode: null,
|
|
|
sensorName: null,
|
|
|
},
|
|
|
rules: {
|
|
|
+ houseName: [
|
|
|
+ {required: true, message: "仓库名称不能为空", trigger: "blur"}
|
|
|
+ ],
|
|
|
sensorName: [
|
|
|
- { required: true, message: "传感器名称不能为空", trigger: "blur" }
|
|
|
+ {required: true, message: "传感器名称不能为空", trigger: "blur"}
|
|
|
],
|
|
|
subscribAddr: [
|
|
|
- { required: true, message: "订阅地址不能为空", trigger: "blur" }
|
|
|
+ {required: true, message: "订阅地址不能为空", trigger: "blur"}
|
|
|
],
|
|
|
topic: [
|
|
|
- { required: true, message: "订阅主题不能为空", trigger: "blur" }
|
|
|
+ {required: true, message: "订阅主题不能为空", trigger: "blur"}
|
|
|
],
|
|
|
smokeThreshold: [
|
|
|
- { required: true, message: "烟雾阈值不能为空", trigger: "blur" }
|
|
|
+ {required: true, message: "烟雾阈值不能为空", trigger: "blur"}
|
|
|
],
|
|
|
tmpThreshold: [
|
|
|
- { required: true, message: "温度阈值不能为空", trigger: "blur" }
|
|
|
+ {required: true, message: "温度阈值不能为空", trigger: "blur"}
|
|
|
],
|
|
|
rhThreshold: [
|
|
|
- { required: true, message: "温度阈值不能为空", trigger: "blur" }
|
|
|
+ {required: true, message: "温度阈值不能为空", trigger: "blur"}
|
|
|
],
|
|
|
alarmTime: [
|
|
|
- { required: true, message: "发布流程间隔时间不能为空", trigger: "blur" }
|
|
|
+ {required: true, message: "发布流程间隔时间不能为空", trigger: "blur"}
|
|
|
],
|
|
|
lastTime: [
|
|
|
- { required: true, message: "上次发布流程时间不能为空", trigger: "blur" }
|
|
|
+ {required: true, message: "上次发布流程时间不能为空", trigger: "blur"}
|
|
|
],
|
|
|
}
|
|
|
});
|
|
|
|
|
|
-const { queryParams, form, rules } = toRefs(data);
|
|
|
+const {queryParams, form, rules} = toRefs(data);
|
|
|
+
|
|
|
+/** 查询仓库配置列表 */
|
|
|
+function getHouseList() {
|
|
|
+ listHouseConfig().then(response => {
|
|
|
+ houseConfigList.value = response.rows;
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+function handleHouseChange(value) {
|
|
|
+ if (value) {
|
|
|
+ // 查找选中的部门信息
|
|
|
+ const selectedDept = findDeptById(houseConfigList.value, value);
|
|
|
+ console.log(selectedDept)
|
|
|
+ if (selectedDept) {
|
|
|
+ form.value.houseId = selectedDept.houseId;
|
|
|
+ form.value.houseName = selectedDept.houseName;
|
|
|
+ form.value.houseCode = selectedDept.houseCode;
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ form.value.houseId = '';
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+/** 根据ID查找部门信息 */
|
|
|
+function findDeptById(deptList, id) {
|
|
|
+ if (!deptList || !id) return null;
|
|
|
+
|
|
|
+ for (let i = 0; i < deptList.length; i++) {
|
|
|
+ const dept = deptList[i];
|
|
|
+ if (dept.houseId === id) {
|
|
|
+ return dept;
|
|
|
+ }
|
|
|
+ if (dept.children && dept.children.length) {
|
|
|
+ const found = findDeptById(dept.children, id);
|
|
|
+ if (found) return found;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+}
|
|
|
|
|
|
/** 查询传感器网关配置列表 */
|
|
|
function getList() {
|
|
|
@@ -212,6 +303,130 @@ function getList() {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+// 显示历史数据图表
|
|
|
+function handleList(row) {
|
|
|
+ chartOpen.value = true;
|
|
|
+ chartTitle.value=row.sensorName+"-历史数据"
|
|
|
+ nextTick(() => {
|
|
|
+ listRecord(row.sensorId).then(response => {
|
|
|
+ initChart(row, response);
|
|
|
+ });
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+// 初始化图表
|
|
|
+function initChart(row,list) {
|
|
|
+ if (!chartRef.value) return;
|
|
|
+
|
|
|
+ const chart = echarts.init(chartRef.value);
|
|
|
+
|
|
|
+ // 模拟数据
|
|
|
+ const xAxisData = [];
|
|
|
+ const smokeData = [];
|
|
|
+ const temperatureData = [];
|
|
|
+ const humidityData = [];
|
|
|
+ for (let i = 0; i < list.length; i++) {
|
|
|
+ const item = list[i];
|
|
|
+ xAxisData.push(item.createTime);
|
|
|
+ smokeData.push(item.smoke);
|
|
|
+ temperatureData.push(item.tmp);
|
|
|
+ humidityData.push(item.rh);
|
|
|
+ }
|
|
|
+ for (let i = 0; i < 24; i++) {
|
|
|
+ xAxisData.push(`${i}:00`);
|
|
|
+ // 烟雾值只有0和1
|
|
|
+ smokeData.push(Math.random() > 0.9 ? 1 : 0);
|
|
|
+ temperatureData.push(Math.floor(Math.random() * 40));
|
|
|
+ humidityData.push(Math.floor(Math.random() * 100));
|
|
|
+ }
|
|
|
+
|
|
|
+ const option = {
|
|
|
+ // title: {
|
|
|
+ // text: `${row.sensorName}`
|
|
|
+ // },
|
|
|
+ tooltip: {
|
|
|
+ trigger: 'axis'
|
|
|
+ },
|
|
|
+ legend: {
|
|
|
+ data: ['烟雾', '温度(℃)', '湿度(%)']
|
|
|
+ },
|
|
|
+ dataZoom: [
|
|
|
+ {
|
|
|
+ type: 'inside',
|
|
|
+ start: 98,
|
|
|
+ end: 100
|
|
|
+ },
|
|
|
+ {
|
|
|
+ start: 98,
|
|
|
+ end: 100
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ grid: {
|
|
|
+ left: '3%',
|
|
|
+ right: '4%',
|
|
|
+ bottom: '3%',
|
|
|
+ containLabel: true
|
|
|
+ },
|
|
|
+ xAxis: {
|
|
|
+ type: 'category',
|
|
|
+ boundaryGap: false,
|
|
|
+ data: xAxisData
|
|
|
+ },
|
|
|
+ yAxis: [
|
|
|
+ {
|
|
|
+ type: 'value',
|
|
|
+ name: '烟雾',
|
|
|
+ position: 'left',
|
|
|
+ min: 0,
|
|
|
+ max: 1,
|
|
|
+ interval: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ type: 'value',
|
|
|
+ name: '温度(℃)/湿度(%)',
|
|
|
+ position: 'right'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ series: [
|
|
|
+ {
|
|
|
+ name: '烟雾',
|
|
|
+ type: 'line',
|
|
|
+ yAxisIndex: 0,
|
|
|
+ step: 'end',
|
|
|
+ data: smokeData,
|
|
|
+ areaStyle: {
|
|
|
+ color: '#8a5b3c',
|
|
|
+ opacity: 0.3
|
|
|
+ },
|
|
|
+ color: '#ff0000'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '温度(℃)',
|
|
|
+ type: 'line',
|
|
|
+ yAxisIndex: 1,
|
|
|
+ data: temperatureData,
|
|
|
+ smooth: true,
|
|
|
+ color: '#0946dc'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '湿度(%)',
|
|
|
+ type: 'line',
|
|
|
+ yAxisIndex: 1,
|
|
|
+ data: humidityData,
|
|
|
+ smooth: true,
|
|
|
+ color: '#abff5c'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ };
|
|
|
+
|
|
|
+ chart.setOption(option);
|
|
|
+
|
|
|
+ // 监听窗口大小变化,自动调整图表大小
|
|
|
+ window.addEventListener('resize', () => {
|
|
|
+ chart.resize();
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
// 取消按钮
|
|
|
function cancel() {
|
|
|
open.value = false;
|
|
|
@@ -304,12 +519,13 @@ function submitForm() {
|
|
|
/** 删除按钮操作 */
|
|
|
function handleDelete(row) {
|
|
|
const _sensorIds = row.sensorId || ids.value;
|
|
|
- proxy.$modal.confirm('是否确认删除传感器网关配置编号为"' + _sensorIds + '"的数据项?').then(function() {
|
|
|
+ proxy.$modal.confirm('是否确认删除传感器网关配置编号为"' + _sensorIds + '"的数据项?').then(function () {
|
|
|
return delSensorConfig(_sensorIds);
|
|
|
}).then(() => {
|
|
|
getList();
|
|
|
proxy.$modal.msgSuccess("删除成功");
|
|
|
- }).catch(() => {});
|
|
|
+ }).catch(() => {
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
/** 导出按钮操作 */
|
|
|
@@ -319,5 +535,6 @@ function handleExport() {
|
|
|
}, `sensorConfig_${new Date().getTime()}.xlsx`)
|
|
|
}
|
|
|
|
|
|
+getHouseList()
|
|
|
getList();
|
|
|
</script>
|