删除监测统计并取消显示modbus设备

This commit is contained in:
baiying
2024-07-23 11:33:48 +08:00
parent 9aed2047cb
commit ba47af758f
3 changed files with 1329 additions and 1590 deletions

View File

@@ -28,11 +28,8 @@
<el-input v-model="form.serialNumber" placeholder="请输入设备编号" :disabled="form.status !== 1" maxlength="32">
<!-- <el-button slot="append" @click="generateNum" :loading="genDisabled"
:disabled="form.status !== 1">生成</el-button> -->
<el-button v-if="form.deviceType !== 3" slot="append" @click="generateNum"
:loading="genDisabled" :disabled="form.status != 1"
v-hasPermi="['iot:device:add']">生成</el-button>
<el-button v-if="form.deviceType === 3" slot="append" @click="genSipID()"
:disabled="form.status != 1" v-hasPermi="['iot:device:add']">生成</el-button>
<el-button v-if="form.deviceType !== 3" slot="append" @click="generateNum" :loading="genDisabled" :disabled="form.status != 1" v-hasPermi="['iot:device:add']">生成</el-button>
<el-button v-if="form.deviceType === 3" slot="append" @click="genSipID()" :disabled="form.status != 1" v-hasPermi="['iot:device:add']">生成</el-button>
</el-input>
</el-form-item>
<el-form-item v-if="openServerTip">
@@ -46,23 +43,26 @@
</template>
</el-form-item>
<el-form-item label="固件版本" prop="firmwareVersion">
<el-input v-model="form.firmwareVersion" placeholder="请输入固件版本" type="number" step="0.1"
:disabled="form.status != 1 || form.deviceType === 3">
<el-input v-model="form.firmwareVersion" placeholder="请输入固件版本" type="number" step="0.1" :disabled="form.status != 1 || form.deviceType === 3">
<template slot="prepend">Version</template>
</el-input>
</el-form-item>
<el-form-item label="模拟设备" prop="isSimulate">
<el-switch v-model="form.isSimulate" active-text="" inactive-text="" :active-value="1" :inactive-value="0"
:disabled="form.deviceType === 3"></el-switch>
<el-switch v-model="form.isSimulate" active-text="" inactive-text="" :active-value="1" :inactive-value="0" :disabled="form.deviceType === 3"></el-switch>
</el-form-item>
<el-form-item label="设备影子" prop="isShadow">
<el-switch v-model="form.isShadow" active-text="" inactive-text="" :active-value="1" :inactive-value="0"
:disabled="form.deviceType === 3"></el-switch>
<el-switch v-model="form.isShadow" active-text="" inactive-text="" :active-value="1" :inactive-value="0" :disabled="form.deviceType === 3"></el-switch>
</el-form-item>
<el-form-item label="禁用设备" prop="deviceStatus">
<el-switch v-model="deviceStatus" active-text="" inactive-text=""
:disabled="form.status === 1 || form.deviceType === 3" :active-value="1" :inactive-value="0"
active-color="#F56C6C"></el-switch>
<el-switch
v-model="deviceStatus"
active-text=""
inactive-text=""
:disabled="form.status === 1 || form.deviceType === 3"
:active-value="1"
:inactive-value="0"
active-color="#F56C6C"
></el-switch>
</el-form-item>
<el-form-item label="备注信息" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" rows="1" />
@@ -70,22 +70,18 @@
</el-col>
<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="8">
<el-form-item label="定位方式" prop="locationWay">
<el-select v-model="form.locationWay" placeholder="请选择设备状态" clearable size="small" style="width: 100%"
:disabled="form.deviceType === 3">
<el-option v-for="dict in dict.type.iot_location_way" :key="dict.value" :label="dict.label"
:value="Number(dict.value)" />
<el-select v-model="form.locationWay" placeholder="请选择设备状态" clearable size="small" style="width: 100%" :disabled="form.deviceType === 3">
<el-option v-for="dict in dict.type.iot_location_way" :key="dict.value" :label="dict.label" :value="Number(dict.value)" />
</el-select>
</el-form-item>
<el-form-item label="设备经度" prop="longitude">
<el-input v-model="form.longitude" placeholder="请输入设备经度" type="number" :disabled="form.locationWay != 3">
<el-link slot="append" :underline="false" href="https://api.map.baidu.com/lbsapi/getpoint/index.html"
target="_blank" :disabled="form.locationWay != 3">坐标拾取</el-link>
<el-link slot="append" :underline="false" href="https://api.map.baidu.com/lbsapi/getpoint/index.html" target="_blank" :disabled="form.locationWay != 3">坐标拾取</el-link>
</el-input>
</el-form-item>
<el-form-item label="设备纬度" prop="latitude">
<el-input v-model="form.latitude" placeholder="请输入设备纬度" type="number" :disabled="form.locationWay != 3">
<el-link slot="append" :underline="false" href="https://api.map.baidu.com/lbsapi/getpoint/index.html"
target="_blank" :disabled="form.locationWay != 3">坐标拾取</el-link>
<el-link slot="append" :underline="false" href="https://api.map.baidu.com/lbsapi/getpoint/index.html" target="_blank" :disabled="form.locationWay != 3">坐标拾取</el-link>
</el-input>
</el-form-item>
<el-form-item label="所在地址" prop="networkAddress">
@@ -95,22 +91,19 @@
<el-input v-model="form.networkIp" placeholder="设备入网IP" disabled />
</el-form-item>
<el-form-item label="激活时间" prop="activeTime">
<el-date-picker clearable v-model="form.activeTime" type="date" value-format="yyyy-MM-dd"
placeholder="设备激活时间" disabled style="width: 100%"></el-date-picker>
<el-date-picker clearable v-model="form.activeTime" type="date" value-format="yyyy-MM-dd" placeholder="设备激活时间" disabled style="width: 100%"></el-date-picker>
</el-form-item>
<el-form-item label="设备信号" prop="rssi">
<el-input v-model="form.rssi" placeholder="设备信号强度" disabled />
</el-form-item>
<el-form-item label="其他信息" prop="remark" v-if="form.deviceId != 0">
<dict-tag :options="dict.type.iot_device_status" :value="form.status"
style="display: inline-block; margin-right: 8px" />
<dict-tag :options="dict.type.iot_device_status" :value="form.status" style="display: inline-block; margin-right: 8px" />
<el-button size="small" @click="handleViewMqtt()">认证信息</el-button>
<el-button size="small" @click="openCodeDialog()">二维码</el-button>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="8" v-if="form.deviceId != 0">
<div
style="border: 1px solid #dfe4ed; border-radius: 5px; padding: 5px; text-align: center; line-height: 400px">
<div style="border: 1px solid #dfe4ed; border-radius: 5px; padding: 5px; text-align: center; line-height: 400px">
<div id="map" style="height: 435px; width: 100%">地图展示区域新增后显示</div>
</div>
</el-col>
@@ -119,10 +112,8 @@
<el-form label-width="100px" style="margin-top: 50px">
<el-form-item style="text-align: center; margin-left: -100px; margin-top: 10px">
<el-button type="primary" @click="submitForm" v-hasPermi="['iot:device:edit']" v-show="form.deviceId != 0">
</el-button>
<el-button type="primary" @click="submitForm" v-hasPermi="['iot:device:add']" v-show="form.deviceId == 0">
</el-button>
<el-button type="primary" @click="submitForm" v-hasPermi="['iot:device:edit']" v-show="form.deviceId != 0"> </el-button>
<el-button type="primary" @click="submitForm" v-hasPermi="['iot:device:add']" v-show="form.deviceId == 0"> </el-button>
</el-form-item>
</el-form>
@@ -140,8 +131,7 @@
<device-live-stream ref="deviceLiveStream" :device="form" />
</el-tab-pane>
<el-tab-pane name="deviceTimer" :disabled="form.deviceId === 0"
v-if="form.deviceType !== 3 && hasShrarePerm('timer')">
<el-tab-pane name="deviceTimer" :disabled="form.deviceId === 0" v-if="form.deviceType !== 3 && hasShrarePerm('timer')">
<span slot="label">设备定时</span>
<device-timer ref="deviceTimer" :device="form" />
</el-tab-pane>
@@ -156,24 +146,16 @@
<device-log ref="deviceLog" :device="form" />
</el-tab-pane>
<el-tab-pane name="deviceFuncLog" :disabled="form.deviceId == 0"
v-if="form.deviceType !== 3 && hasShrarePerm('log')" lazy>
<el-tab-pane name="deviceFuncLog" :disabled="form.deviceId == 0" v-if="form.deviceType !== 3 && hasShrarePerm('log')" lazy>
<span slot="label">指令日志</span>
<device-func ref="deviceFuncLog" :device="form" />
</el-tab-pane>
<el-tab-pane name="deviceMonitor" :disabled="form.deviceId == 0 "
v-if="form.deviceType !== 3 && hasShrarePerm('monitor')">
<el-tab-pane name="deviceMonitor" :disabled="form.deviceId == 0" v-if="form.deviceType !== 3 && hasShrarePerm('monitor')">
<span slot="label">实时监测</span>
<device-monitor ref="deviceMonitor" :device="form" />
</el-tab-pane>
<el-tab-pane name="deviceStastic" :disabled="form.deviceId == 0"
v-if="form.deviceType !== 3 && hasShrarePerm('statistic')">
<span slot="label">监测统计</span>
<device-statistic ref="deviceStatistic" :device="form" />
</el-tab-pane>
<!-- 用于设置间距 -->
<el-tab-pane disabled>
<span slot="label">
@@ -247,10 +229,10 @@ import deviceLog from './device-log';
import deviceUser from './device-user';
import runningStatus from './running-status';
import deviceMonitor from './device-monitor';
import deviceStatistic from './device-statistic';
import deviceTimer from './device-timer';
import DeviceFunc from './device-functionlog';
import business from "@/views/iot/business/index.vue";
import business from '@/views/iot/business/index.vue';
import vueQr from 'vue-qr';
import { loadBMap } from '@/utils/map.js';
import { deviceSynchronization, getDevice, addDevice, updateDevice, generatorDeviceNum, listDevice, getMqttConnect } from '@/api/iot/device';
@@ -262,8 +244,6 @@ import sipid from '../sip/sipidGen.vue';
import player from '@/views/components/player/player.vue';
import channel from '../sip/channel';
export default {
name: 'DeviceEdit',
dicts: ['iot_device_status', 'iot_location_way'],
@@ -273,7 +253,7 @@ export default {
deviceLog,
deviceUser,
deviceMonitor,
deviceStatistic,
runningStatus,
productList,
deviceTimer,
@@ -557,10 +537,7 @@ export default {
}
}
this.$nextTick(() => {
// 获取监测统计数据
if (panel.name === 'deviceStastic') {
this.$refs.deviceStatistic.getListHistory();
} else if (panel.name === 'deviceTimer') {
if (panel.name === 'deviceTimer') {
this.$refs.deviceTimer.getList();
} else if (panel.name === 'deviceSub') {
if (this.form.serialNumber) {
@@ -670,10 +647,7 @@ export default {
data.thingsModels[i].datatype.arrayParams[k][j].name = '[' + data.thingsModels[i].name + (k + 1) + '] ' + data.thingsModels[i].datatype.arrayParams[k][j].name;
data.thingsModels[i].datatype.arrayParams[k][j].datatype.arrayType = 'object';
data.chartList.push(data.thingsModels[i].datatype.arrayParams[k][j]);
if (data.thingsModels[i].datatype.arrayParams[k][j].isHistory == 1) {
// 监测统计
data.staticList.push(data.thingsModels[i].datatype.arrayParams[k][j]);
}
if (data.thingsModels[i].datatype.arrayParams[k][j].isMonitor == 1) {
// 实时监测
data.monitorList.push(data.thingsModels[i].datatype.arrayParams[k][j]);
@@ -710,10 +684,7 @@ export default {
// 图表
data.thingsModels[i].datatype.params[j].name = '[' + data.thingsModels[i].name + '] ' + data.thingsModels[i].datatype.params[j].name;
data.chartList.push(data.thingsModels[i].datatype.params[j]);
if (data.thingsModels[i].datatype.params[j].isHistory == 1) {
// 监测统计
data.staticList.push(data.thingsModels[i].datatype.params[j]);
}
if (data.thingsModels[i].datatype.params[j].isMonitor == 1) {
// 实时监测
data.monitorList.push(data.thingsModels[i].datatype.params[j]);
@@ -724,10 +695,7 @@ export default {
} else if (data.thingsModels[i].isChart == 1) {
// // 图表、实时监测、监测统计分类放置
data.chartList.push(data.thingsModels[i]);
if (data.thingsModels[i].isHistory == 1) {
// 监测统计
data.staticList.push(data.thingsModels[i]);
}
if (data.thingsModels[i].isMonitor == 1) {
// 实时监测
data.monitorList.push(data.thingsModels[i]);

View File

@@ -1,225 +0,0 @@
<template>
<div style="padding-left: 20px">
<el-row>
<el-col :span="24">
<el-form :model="queryParams" ref="queryForm" :inline="true" label-width="75px">
<el-form-item label="请选择设备从机:" label-width="120px" v-if="isSubDev">
<el-select v-model="queryParams.slaveId" placeholder="请选择设备从机" @change="selectSlave">
<el-option v-for="slave in slaveList" :key="slave.slaveId" :label="`${slave.deviceName} (${slave.slaveId})`"
:value="slave.slaveId"></el-option>
</el-select>
</el-form-item>
<el-form-item label="时间范围">
<el-date-picker v-model="daterangeTime" size="small" style="width: 240px" value-format="yyyy-MM-dd"
type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="getListHistory">查询</el-button>
</el-form-item>
</el-form>
</el-col>
<el-col :span="23">
<div v-for="(item, index) in staticList" :key="index" style="margin-bottom: 30px">
<el-card shadow="hover" :body-style="{ padding: '10px 0px', overflow: 'auto' }" v-loading="loading">
<div ref="statisticMap" style="height: 300px; width: 1080px"></div>
</el-card>
</div>
</el-col>
</el-row>
</div>
</template>
<script>
import { listHistory } from '@/api/iot/deviceLog';
export default {
name: 'device-statistic',
props: {
device: {
type: Object,
default: null,
},
},
watch: {
// 获取到父组件传递的device后
device: function (newVal, oldVal) {
this.deviceInfo = newVal;
if (this.deviceInfo && this.deviceInfo.deviceId != 0) {
this.isSubDev = this.deviceInfo.subDeviceList && this.deviceInfo.subDeviceList.length > 0;
this.queryParams.slaveId = this.deviceInfo.slaveId;
this.queryParams.serialNumber = this.deviceInfo.serialNumber;
this.slaveList = newVal.subDeviceList;
// 监测数据
if (this.isSubDev) {
this.staticList = this.deviceInfo.cacheThingsModel['properties'].filter((item) => {
return item.tempSlaveId == this.queryParams.slaveId;
});
} else {
this.staticList = this.deviceInfo.staticList;
}
// 加载图表
this.$nextTick(function () {
// 绘制图表
this.getStatistic();
});
}
},
},
data() {
return {
loading: true,
// 设备信息
deviceInfo: {},
// 统计物模型
staticList: [],
// 图表集合
chart: [],
// 激活时间范围
daterangeTime: [this.getTime(), this.getTime()],
// 查询参数
queryParams: {
serialNumber: null,
identity: '',
slaveId: undefined,
},
// 对象数组类型物模型暂存数据
arrayData: [],
// 子设备列表
slaveList: [],
isSubDev: false,
};
},
mounted() {
// 获取统计数据
// this.getListHistory();
},
methods: {
/** 获取当前日期 **/
getTime() {
let date = new Date();
let y = date.getFullYear();
let m = date.getMonth() + 1;
let d = date.getDate();
m = m < 10 ? '0' + m : m;
d = d < 10 ? '0' + d : d;
return y + '-' + m + '-' + d;
},
/* 获取监测历史数据*/
getListHistory() {
this.loading = true;
this.queryParams.serialNumber = this.queryParams.slaveId ? this.deviceInfo.serialNumber + '_' + this.queryParams.slaveId : this.deviceInfo.serialNumber;
if (null != this.daterangeTime && '' != this.daterangeTime) {
this.queryParams.beginTime = this.daterangeTime[0];
this.queryParams.endTime = this.daterangeTime[1] + ' 23:59';
}
listHistory(this.queryParams).then((res) => {
for (let key in res.data) {
for (let i = 0; i < this.staticList.length; i++) {
if (key == this.staticList[i].id) {
// 对象转数组
let dataList = [];
for (let j = 0; j < res.data[key].length; j++) {
let item = [];
item[0] = res.data[key][j].time;
item[1] = res.data[key][j].value;
dataList.push(item);
}
// 图表显示数据
this.chart[i].setOption({
series: [
{
data: dataList,
},
],
});
}
}
}
this.loading = false;
});
},
/**监测统计数据 */
getStatistic() {
let color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'];
for (let i = 0; i < this.staticList.length; i++) {
// 设置宽度
this.$refs.statisticMap[i].style.width = document.documentElement.clientWidth - 510 + 'px';
this.chart[i] = this.$echarts.init(this.$refs.statisticMap[i]);
var option;
option = {
animationDurationUpdate: 3000,
tooltip: {
trigger: 'axis',
},
title: {
left: 'center',
text: this.staticList[i].name + '统计 (单位 ' + (this.staticList[i].datatype && this.staticList[i].datatype.unit != undefined ? this.staticList[i].datatype.unit : '无') + '',
},
grid: {
top: '80px',
left: '50px',
right: '20px',
bottom: '80px',
// containLabel: true,
},
toolbox: {
feature: {
dataZoom: {
yAxisIndex: 'none',
},
restore: {},
saveAsImage: {},
},
},
xAxis: {
type: 'time',
},
yAxis: {
type: 'value',
},
dataZoom: [
{
type: 'inside',
start: 0,
end: 100,
},
{
start: 0,
end: 100,
},
],
series: [
{
name: this.staticList[i].name,
type: 'line',
symbol: 'none',
sampling: 'lttb',
itemStyle: {
color: i > 9 ? color[0] : color[i],
},
areaStyle: {},
data: [],
},
],
};
option && this.chart[i].setOption(option);
}
},
/*选择从机*/
selectSlave() {
this.staticList = this.deviceInfo.cacheThingsModel['properties'].filter((item) => {
return item.tempSlaveId == this.queryParams.slaveId;
});
// 加载图表
this.$nextTick(function () {
// 绘制图表
this.getStatistic();
// 获取统计数据
this.getListHistory();
});
},
},
};
</script>

View File

@@ -3,23 +3,19 @@
<el-card style="margin-bottom: 6px">
<el-form :model="queryParams" ref="queryForm" :inline="true" label-width="75px" style="margin-bottom: -20px">
<el-form-item label="设备名称" prop="deviceName">
<el-input v-model="queryParams.deviceName" placeholder="请输入设备名称" clearable size="small"
@keyup.enter.native="handleQuery" style="width: 150px" />
<el-input v-model="queryParams.deviceName" placeholder="请输入设备名称" clearable size="small" @keyup.enter.native="handleQuery" style="width: 150px" />
</el-form-item>
<el-form-item label="设备编号" prop="serialNumber">
<el-input v-model="queryParams.serialNumber" placeholder="请输入设备编号" clearable size="small"
@keyup.enter.native="handleQuery" style="width: 150px" />
<el-input v-model="queryParams.serialNumber" placeholder="请输入设备编号" clearable size="small" @keyup.enter.native="handleQuery" style="width: 150px" />
</el-form-item>
<el-form-item label="设备状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择设备状态" clearable size="small" style="width: 150px">
<el-option v-for="dict in dict.type.iot_device_status" :key="dict.value" :label="dict.label"
:value="dict.value" />
<el-option v-for="dict in dict.type.iot_device_status" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="我的分组">
<el-select v-model="queryParams.groupId" placeholder="请选择我的分组" clearable size="small" style="width: 150px">
<el-option v-for="group in myGroupList" :key="group.groupId" :label="group.groupName"
:value="group.groupId" />
<el-option v-for="group in myGroupList" :key="group.groupId" :label="group.groupName" :value="group.groupId" />
</el-select>
</el-form-item>
<el-form-item>
@@ -27,10 +23,8 @@
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
<el-form-item style="float: right">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleEditDevice(0)"
v-hasPermi="['iot:device:add']">新增</el-button>
<el-button type="primary" plain icon="el-icon-s-grid" size="mini" @click="handleChangeShowType"
v-hasPermi="['iot:device:add']">切换</el-button>
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleEditDevice(0)" v-hasPermi="['iot:device:add']">新增</el-button>
<el-button type="primary" plain icon="el-icon-s-grid" size="mini" @click="handleChangeShowType" v-hasPermi="['iot:device:add']">切换</el-button>
</el-form-item>
</el-form>
</el-card>
@@ -62,12 +56,9 @@
<el-table-column label="信号" align="center" prop="rssi" width="60">
<template slot-scope="scope">
<svg-icon v-if="scope.row.status == 3 && scope.row.rssi >= '-55'" icon-class="wifi_4" />
<svg-icon v-else-if="scope.row.status == 3 && scope.row.rssi >= '-70' && scope.row.rssi < '-55'"
icon-class="wifi_3" />
<svg-icon v-else-if="scope.row.status == 3 && scope.row.rssi >= '-85' && scope.row.rssi < '-70'"
icon-class="wifi_2" />
<svg-icon v-else-if="scope.row.status == 3 && scope.row.rssi >= '-100' && scope.row.rssi < '-85'"
icon-class="wifi_1" />
<svg-icon v-else-if="scope.row.status == 3 && scope.row.rssi >= '-70' && scope.row.rssi < '-55'" icon-class="wifi_3" />
<svg-icon v-else-if="scope.row.status == 3 && scope.row.rssi >= '-85' && scope.row.rssi < '-70'" icon-class="wifi_2" />
<svg-icon v-else-if="scope.row.status == 3 && scope.row.rssi >= '-100' && scope.row.rssi < '-85'" icon-class="wifi_1" />
<svg-icon v-else icon-class="wifi_0" />
</template>
</el-table-column>
@@ -94,29 +85,22 @@
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200">
<template slot-scope="scope">
<el-button type="danger" size="small" style="padding: 5px" icon="el-icon-delete"
@click="handleDelete(scope.row)" v-hasPermi="['iot:device:remove']">删除</el-button>
<el-button type="primary" size="small" style="padding: 5px" icon="el-icon-view"
@click="handleEditDevice(scope.row)" v-hasPermi="['iot:device:add']">查看</el-button>
<el-button type="primary" size="small" style="padding: 5px" @click="openSummaryDialog(scope.row)"
v-if="form.deviceId != 0">二维码</el-button>
<el-button type="danger" size="small" style="padding: 5px" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['iot:device:remove']">删除</el-button>
<el-button type="primary" size="small" style="padding: 5px" icon="el-icon-view" @click="handleEditDevice(scope.row)" v-hasPermi="['iot:device:add']">查看</el-button>
<el-button type="primary" size="small" style="padding: 5px" @click="openSummaryDialog(scope.row)" v-if="form.deviceId != 0">二维码</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
:pageSizes="[12, 24, 36, 60]" @pagination="getList" />
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" :pageSizes="[12, 24, 36, 60]" @pagination="getList" />
</el-card>
<el-card style="padding-bottom: 100px" v-if="showType == 'card'">
<el-row :gutter="30" v-loading="loading">
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="6" v-for="(item, index) in deviceList" :key="index"
style="margin-bottom: 30px; text-align: center">
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="6" v-for="(item, index) in deviceList" :key="index" style="margin-bottom: 30px; text-align: center">
<el-card :body-style="{ padding: '20px' }" shadow="always" class="card-item">
<el-row type="flex" :gutter="10" justify="space-between">
<el-col :span="20" style="text-align: left">
<el-link type="" :underline="false" @click="handleEditDevice(item)"
style="font-weight: bold; font-size: 16px; line-height: 32px">
<el-link type="" :underline="false" @click="handleEditDevice(item)" style="font-weight: bold; font-size: 16px; line-height: 32px">
<el-tooltip class="item" effect="dark" content="分享的设备" placement="top-start">
<svg-icon icon-class="share" style="font-size: 20px" v-if="item.isOwner != 1" />
</el-tooltip>
@@ -134,8 +118,7 @@
<svg-icon v-if="item.status == 3 && item.rssi >= '-55'" icon-class="wifi_4" />
<svg-icon v-else-if="item.status == 3 && item.rssi >= '-70' && item.rssi < '-55'" icon-class="wifi_3" />
<svg-icon v-else-if="item.status == 3 && item.rssi >= '-85' && item.rssi < '-70'" icon-class="wifi_2" />
<svg-icon v-else-if="item.status == 3 && item.rssi >= '-100' && item.rssi < '-85'"
icon-class="wifi_1" />
<svg-icon v-else-if="item.status == 3 && item.rssi >= '-100' && item.rssi < '-85'" icon-class="wifi_1" />
<svg-icon v-else icon-class="wifi_0" />
</div>
</el-col>
@@ -143,8 +126,7 @@
<el-row :gutter="10">
<el-col :span="17">
<div style="text-align: left; line-height: 40px; white-space: nowrap">
<dict-tag :options="dict.type.iot_device_status" :value="item.status" size="small"
style="display: inline-block" />
<dict-tag :options="dict.type.iot_device_status" :value="item.status" size="small" style="display: inline-block" />
<span style="display: inline-block; margin: 0 10px">
<!-- <el-tag type="success" size="small" v-if="item.isShadow == 1">影子</el-tag>
<el-tag type="info" size="small" v-else>影子</el-tag> -->
@@ -168,35 +150,48 @@
</el-col>
<el-col :span="7">
<div style="margin-top: 10px">
<el-image style="width: 100%; height: 100px; border-radius: 10px" lazy
:preview-src-list="[baseUrl + item.imgUrl]" :src="baseUrl + item.imgUrl" fit="cover"
v-if="item.imgUrl != null && item.imgUrl != ''"></el-image>
<el-image style="width: 100%; height: 100px; border-radius: 10px"
<el-image
style="width: 100%; height: 100px; border-radius: 10px"
lazy
:preview-src-list="[baseUrl + item.imgUrl]"
:src="baseUrl + item.imgUrl"
fit="cover"
v-if="item.imgUrl != null && item.imgUrl != ''"
></el-image>
<el-image
style="width: 100%; height: 100px; border-radius: 10px"
:preview-src-list="[require('@/assets/images/gateway.png')]"
:src="require('@/assets/images/gateway.png')" fit="cover" v-else-if="item.deviceType == 2"></el-image>
<el-image style="width: 100%; height: 100px; border-radius: 10px"
:preview-src-list="[require('@/assets/images/video.png')]" :src="require('@/assets/images/video.png')"
fit="cover" v-else-if="item.deviceType == 3"></el-image>
<el-image style="width: 100%; height: 100px; border-radius: 10px"
:src="require('@/assets/images/gateway.png')"
fit="cover"
v-else-if="item.deviceType == 2"
></el-image>
<el-image
style="width: 100%; height: 100px; border-radius: 10px"
:preview-src-list="[require('@/assets/images/video.png')]"
:src="require('@/assets/images/video.png')"
fit="cover"
v-else-if="item.deviceType == 3"
></el-image>
<el-image
style="width: 100%; height: 100px; border-radius: 10px"
:preview-src-list="[require('@/assets/images/product.png')]"
:src="require('@/assets/images/product.png')" fit="cover" v-else></el-image>
:src="require('@/assets/images/product.png')"
fit="cover"
v-else
></el-image>
</div>
</el-col>
</el-row>
<el-button-group style="margin-top: 15px">
<el-button type="danger" size="mini" style="padding: 5px 10px" icon="el-icon-delete"
@click="handleDelete(item)" v-hasPermi="['iot:device:remove']">删除</el-button>
<el-button type="primary" size="mini" style="padding: 5px 15px" icon="el-icon-view"
@click="handleEditDevice(item, 'basic')" v-hasPermi="['iot:device:add']">查看</el-button>
<el-button type="success" size="mini" style="padding: 5px 15px" icon="el-icon-odometer"
@click="handleRunDevice(item)" v-hasPermi="['iot:device:add']">运行状态</el-button>
<el-button type="danger" size="mini" style="padding: 5px 10px" icon="el-icon-delete" @click="handleDelete(item)" v-hasPermi="['iot:device:remove']">删除</el-button>
<el-button type="primary" size="mini" style="padding: 5px 15px" icon="el-icon-view" @click="handleEditDevice(item, 'basic')" v-hasPermi="['iot:device:add']">查看</el-button>
<el-button type="success" size="mini" style="padding: 5px 15px" icon="el-icon-odometer" @click="handleRunDevice(item)" v-hasPermi="['iot:device:add']">运行状态</el-button>
</el-button-group>
</el-card>
</el-col>
</el-row>
<el-empty description="暂无数据,请添加设备" v-if="total == 0"></el-empty>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
:pageSizes="[12, 24, 36, 60]" @pagination="getList" />
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" :pageSizes="[12, 24, 36, 60]" @pagination="getList" />
</el-card>
<!-- 二维码 -->
<el-dialog :visible.sync="openSummary" width="300px" append-to-body>
@@ -403,6 +398,7 @@ export default {
if (this.deviceList && this.deviceList.length > 0) {
this.mqttSubscribe(this.deviceList);
}
this.deviceList = this.deviceList.filter((device) => device.deviceId !== 118);
this.loading = false;
});
},