Browse Source

设备相关更新修改

master
xuhuajiao 8 months ago
parent
commit
ff7ed56586
  1. 11
      src/api/storeManage/deviceManage/device.js
  2. 6
      src/api/storeManage/displayConfig/index.js
  3. 27
      src/views/dashboard/PanelGroup.vue
  4. 62
      src/views/environmentalScreen/index.vue
  5. 96
      src/views/home.vue
  6. 52
      src/views/storeManage/deviceManage/module/deviceDetail.vue
  7. 36
      src/views/storeManage/levelManage/index.vue

11
src/api/storeManage/deviceManage/device.js

@ -1,4 +1,5 @@
import request from '@/utils/request'
import qs from 'qs'
export function getSupplier() {
return request({
@ -91,6 +92,14 @@ export function getDeviceList(params) {
})
}
// 根据设备id查看设备是否在线
export function FetchIsOnline(params) {
return request({
url: 'api/device/isOnline' + '?' + qs.stringify(params, { indices: false }),
method: 'get'
})
}
// 根据区列获取在库已借数
export function FetchInBorrowByQuCol(params) {
return request({
@ -144,4 +153,4 @@ export function FetchCallExternalStopMove(params) {
})
}
export default { add, edit, del, getSupplier, getDeviceType, getDeviceById, getDesecabinetById, getRotarycabinetById, getDeviceList, FetchInBorrowByQuCol, unbind, FetchCallExternalOpenCol, FetchCallExternalResetCol, FetchCallExternalVent, FetchCallExternalStopMove }
export default { add, edit, del, getSupplier, getDeviceType, getDeviceById, getDesecabinetById, getRotarycabinetById, getDeviceList, FetchIsOnline, FetchInBorrowByQuCol, unbind, FetchCallExternalOpenCol, FetchCallExternalResetCol, FetchCallExternalVent, FetchCallExternalStopMove }

6
src/api/storeManage/displayConfig/index.js

@ -1,10 +1,10 @@
import request from '@/utils/request'
import qs from 'qs'
export function list(params) {
return request({
url: 'api/displayconfig/list',
method: 'get',
params
url: 'api/displayconfig/list' + '?' + qs.stringify(params, { indices: false }),
method: 'get'
})
}

27
src/views/dashboard/PanelGroup.vue

@ -122,6 +122,8 @@ export default {
totalDeviceNum: 0,
onlineDeviceNum: 0,
offlineDeviceNum: 0,
onlineDevice: [],
offDevice: [],
deviveTitle: '在线设备',
deviceVisible: false,
tableLoading: false,
@ -136,7 +138,8 @@ export default {
mounted() {
this.handleArchivesNum()
this.handleCaseNum()
this.handleTotalDeviceNum()
this.getDevice()
// this.handleTotalDeviceNum()
},
methods: {
handleSetLineChartData(type) {
@ -176,22 +179,26 @@ export default {
}
}
},
getDevice() {
getDeviceOnoff().then(data => {
this.getDeviceFlag = true
this.totalDeviceNum = data.deviceall.length
this.onlineDeviceNum = data.online.length
this.offlineDeviceNum = data.offline.length
this.onlineDevice = data.online
this.offDevice = data.offline
})
},
getDeviceDetail(type) {
this.tableLoading = true
this.deviceVisible = true
getDeviceOnoff().then(data => {
this.tableDeviceData = []
if (type === 'on') {
this.deviveTitle = '在线设备'
this.tableDeviceData = this.data.online
this.tableDeviceData = this.onlineDevice
} else {
this.deviveTitle = '离线设备'
this.tableDeviceData = this.data.offline
this.tableDeviceData = this.offDevice
}
setTimeout(() => {
this.tableLoading = false
}, 1000)
})
},
//
handleArchivesNum() {

62
src/views/environmentalScreen/index.vue

@ -154,33 +154,33 @@
</div>
</li>
<!-- 整理室 -->
<li v-show="bannerIndex === 2 && topDisplayData.ZLS_MO_OAO_001.show" :class="{ 'li-warn': topDisplayData.ZLS_MO_OAO_001.curstatus > 0 }">
<li v-show="bannerIndex === 2 && topOAODisplayData.ZLS_MO_OAO_001.show" :class="{ 'li-warn': topOAODisplayData.ZLS_MO_OAO_001.alarmState }">
<svg-icon icon-class="temperature" class-name="msg-list-svg" />
<div class="msg-txt">
<span class="msg-list-num">{{ topDisplayData.ZLS_MO_OAO_001.curValue }}</span>
<p class="msg-list-unit">温度 {{ topDisplayData.ZLS_MO_OAO_001.unit }}</p>
<span class="msg-list-num">{{ topOAODisplayData.ZLS_MO_OAO_001.wendu }}</span>
<p class="msg-list-unit">温度</p>
</div>
</li>
<li v-show="bannerIndex === 2 && topDisplayData.ZLS_MO_OAO_001.show" :class="{ 'li-warn': topDisplayData.ZLS_MO_OAO_001.curstatus > 0 }">
<li v-show="bannerIndex === 2 && topOAODisplayData.ZLS_MO_OAO_001.show" :class="{ 'li-warn': topOAODisplayData.ZLS_MO_OAO_001.alarmState }">
<svg-icon icon-class="shidu" class-name="msg-list-svg" />
<div class="msg-txt">
<span class="msg-list-num">{{ topDisplayData.ZLS_MO_OAO_001.curValue }}</span>
<p class="msg-list-unit">湿度 {{ topDisplayData.ZLS_MO_OAO_001.unit }}</p>
<span class="msg-list-num">{{ topOAODisplayData.ZLS_MO_OAO_001.sidu }}</span>
<p class="msg-list-unit">湿度</p>
</div>
</li>
<!-- 阅览室 -->
<li v-show="bannerIndex === 3 && topDisplayData.YLS_MO_OAO_001.show" :class="{ 'li-warn': topDisplayData.YLS_MO_OAO_001.curstatus > 0 }">
<li v-show="bannerIndex === 3 && topOAODisplayData.YLS_MO_OAO_001.show" :class="{ 'li-warn': topOAODisplayData.YLS_MO_OAO_001.alarmState }">
<svg-icon icon-class="temperature" class-name="msg-list-svg" />
<div class="msg-txt">
<span class="msg-list-num">{{ topDisplayData.YLS_MO_OAO_001.curValue }}</span>
<p class="msg-list-unit">温度 {{ topDisplayData.YLS_MO_OAO_001.unit }}</p>
<span class="msg-list-num">{{ topOAODisplayData.YLS_MO_OAO_001.wendu }}</span>
<p class="msg-list-unit">温度</p>
</div>
</li>
<li v-show="bannerIndex === 3 && topDisplayData.YLS_MO_OAO_001.show" :class="{ 'li-warn': topDisplayData.YLS_MO_OAO_001.curstatus > 0 }">
<li v-show="bannerIndex === 3 && topOAODisplayData.YLS_MO_OAO_001.show" :class="{ 'li-warn': topOAODisplayData.YLS_MO_OAO_001.alarmState }">
<svg-icon icon-class="shidu" class-name="msg-list-svg" />
<div class="msg-txt">
<span class="msg-list-num">{{ topDisplayData.YLS_MO_OAO_001.curValue }}</span>
<p class="msg-list-unit">湿度 {{ topDisplayData.YLS_MO_OAO_001.unit }}</p>
<span class="msg-list-num">{{ topOAODisplayData.YLS_MO_OAO_001.sidu }}</span>
<p class="msg-list-unit">湿度</p>
</div>
</li>
<!-- 7F 现行文件室 / 信息技术室 -->
@ -386,6 +386,20 @@ export default {
url: '',
allDeviceIds: [],
oaoMessage: [],
topOAODisplayData: {
ZLS_MO_OAO_001: {
show: false,
wendu: '',
sidu: '',
alarmState: 0
},
YLS_MO_OAO_001: {
show: false,
wendu: '',
sidu: '',
alarmState: 0
}
},
topDisplayData: {
DAK_DIV_TOP_001: {
show: false,
@ -460,18 +474,6 @@ export default {
unit: '',
curstatus: 0
},
ZLS_MO_OAO_001: {
show: false,
curValue: '',
unit: '',
curstatus: 0
},
YLS_MO_OAO_001: {
show: false,
curValue: '',
unit: '',
curstatus: 0
},
// 7F
XXW_DIV_TOP_001: {
show: false,
@ -601,10 +603,12 @@ export default {
this.roomId = 'D6490DA3D4261E8C26D0E3'
} else if (index === 2) {
this.bannerRoomName = '5F 整理室'
this.roomId = 'D6490DA3D4261E8C26D0E3'
this.roomId = 'D5C48B49DF66183CF24974'
await this.changeRoomGetDeivce()
} else if (index === 3) {
this.bannerRoomName = '5F 阅览室'
this.roomId = 'D6490DA3D4261E8C26D0E3'
this.roomId = '9E0A527462BB8A060EB165'
await this.changeRoomGetDeivce()
} else if (index === 4) {
this.bannerRoomName = '7F 全景图'
this.roomId = '1B2DADD8499058954C0CAC'
@ -755,6 +759,12 @@ export default {
sidu: (sidu?.curvalue) ? (Math.round(sidu?.curvalue)) : '-',
alarmState: (wendu && wendu.curstatus > 0) || (sidu && sidu.curstatus > 0)
})
this.$set(this.topOAODisplayData, element.divPosition, {
show: true,
wendu: (wendu?.curvalue) ? (Math.round(wendu?.curvalue)) : '-',
sidu: (sidu?.curvalue) ? (Math.round(sidu?.curvalue)) : '-',
alarmState: (wendu && wendu.curstatus > 0) || (sidu && sidu.curstatus > 0)
})
} else {
// LS
const waterLeakageParamId1 = element.deviceSpecParams.find((item) => { return item.paramName === '维护报警' })?.paramId

96
src/views/home.vue

@ -8,9 +8,15 @@
</el-row> -->
<el-row :gutter="20" style="margin-bottom:20px;height: 152px;">
<el-col :xs="24" :sm="24" :lg="8">
<div class="container-left search-area">
<!-- search-area -->
<div class="container-left" style="height: 100%;margin: 0; position: relative;">
<span class="right-top-line" />
<span class="left-bottom-line" />
<h3 class=" table-title" style="margin-bottom: 26px;">
<p class="title-arrow">
档案检索
</p>
</h3>
<SearchAcrives :is-home-search="isHomeSearch" />
</div>
</el-col>
@ -63,26 +69,26 @@
<div class="five-bottom">
<p class="env-title">整理室</p>
<ul class="leakage-list">
<li :class="{ 'leakage-warn': topDisplayData.ZLS_MO_OAO_001.curstatus > 0 }">
<li :class="{ 'leakage-warn': oaoMessage.ZLS_MO_OAO_001.alarmState }">
<p>温度</p>
<span>{{ topDisplayData.ZLS_MO_OAO_001.curValue }}</span>
<span>{{ oaoMessage.ZLS_MO_OAO_001.wendu }}</span>
</li>
<li :class="{ 'leakage-warn': topDisplayData.ZLS_MO_OAO_001.curstatus > 0 }">
<li :class="{ 'leakage-warn': oaoMessage.ZLS_MO_OAO_001.alarmState }">
<p>湿度</p>
<span>{{ topDisplayData.ZLS_MO_OAO_001.curValue }}</span>
<span>{{ oaoMessage.ZLS_MO_OAO_001.sidu }}</span>
</li>
</ul>
</div>
<div class="five-bottom" style="padding-right: 13px;">
<p class="env-title">阅览室</p>
<ul class="leakage-list">
<li :class="{ 'leakage-warn': topDisplayData.YLS_MO_OAO_001.curstatus > 0 }">
<li :class="{ 'leakage-warn': oaoMessage.YLS_MO_OAO_001.alarmState }">
<p>温度</p>
<span>{{ topDisplayData.YLS_MO_OAO_001.curValue }}</span>
<span>{{ oaoMessage.YLS_MO_OAO_001.wendu }}</span>
</li>
<li :class="{ 'leakage-warn': topDisplayData.YLS_MO_OAO_001.curstatus > 0 }">
<li :class="{ 'leakage-warn': oaoMessage.YLS_MO_OAO_001.alarmState}">
<p>湿度</p>
<span>{{ topDisplayData.YLS_MO_OAO_001.curValue }}</span>
<span>{{ oaoMessage.YLS_MO_OAO_001.sidu }}</span>
</li>
</ul>
</div>
@ -131,17 +137,17 @@
<p>湿度</p>
<span>{{ topDisplayData.DXW_DIV_TOP_002.curValue }}</span>
</li>
<li :class="{ 'leakage-warn': topDisplayData.XXW_DIV_TOP_003.curstatus > 0 }">
<li :class="{ 'leakage-warn': topDisplayData.DXW_DIV_TOP_003.curstatus > 0 }">
<p>CO2</p>
<span>{{ topDisplayData.XXW_DIV_TOP_003.curValue }}</span>
<span>{{ topDisplayData.DXW_DIV_TOP_003.curValue }}</span>
</li>
<li :class="{ 'leakage-warn': topDisplayData.XXW_DIV_TOP_005.curstatus > 0 }">
<li :class="{ 'leakage-warn': topDisplayData.DXW_DIV_TOP_005.curstatus > 0 }">
<p>PM2.5</p>
<span>{{ topDisplayData.XXW_DIV_TOP_005.curValue }}</span>
<span>{{ topDisplayData.DXW_DIV_TOP_005.curValue }}</span>
</li>
<li :class="{ 'leakage-warn': topDisplayData.XXW_DIV_TOP_006.curstatus > 0 }">
<li :class="{ 'leakage-warn': topDisplayData.DXW_DIV_TOP_006.curstatus > 0 }">
<p>PM10</p>
<span>{{ topDisplayData.XXW_DIV_TOP_006.curValue }}</span>
<span>{{ topDisplayData.DXW_DIV_TOP_006.curValue }}</span>
</li>
<li :class="{ 'leakage-warn': topDisplayData.DXW_DIV_TOP_004.curstatus > 0 }">
<p>VOC</p>
@ -330,11 +336,25 @@ export default {
floorIndex: 0,
floorEnvIndex: 0,
isHomeSearch: false,
roomId: null,
allDisplayConfigData: [],
displayConfigData: [],
url: '',
allDeviceIds: [],
oaoMessage: [],
oaoMessage: {
ZLS_MO_OAO_001: {
show: false,
wendu: '',
sidu: '',
alarmState: 0
},
YLS_MO_OAO_001: {
show: false,
wendu: '',
sidu: '',
alarmState: 0
}
},
topDisplayData: {
DAK_DIV_TOP_001: {
show: false,
@ -372,18 +392,6 @@ export default {
unit: '',
curstatus: 0
},
ZLS_MO_OAO_001: {
show: false,
curValue: '',
unit: '',
curstatus: 0
},
YLS_MO_OAO_001: {
show: false,
curValue: '',
unit: '',
curstatus: 0
},
// 7F
DXW_DIV_TOP_001: {
show: false,
@ -468,7 +476,12 @@ export default {
},
async created() {
this.getWaitBorrower()
this.allDisplayConfigData = await displayConfigApi.list({ storeroomId: this.roomId })
this.roomId = null
const params = {
storeroomId: null,
isQueryAll: 1
}
this.allDisplayConfigData = await displayConfigApi.list(params)
this.allDisplayConfigData.forEach(element => {
if (element.isDisplay && element.bindState && element.deviceInfo && (element.divPosition.includes('OAO') || element.divPosition.includes('TOP') || element.divPosition.includes('LS'))) {
this.allDeviceIds.push(element.deviceInfo.deviceId)
@ -556,8 +569,10 @@ export default {
},
getRealTimeData() {
if (this.allDeviceIds.length > 0) {
console.log('this.allDeviceIds', this.allDeviceIds)
console.log('this.displayConfigData', this.displayConfigData)
thirdApi.getRealTimeData({ ids: this.allDeviceIds, url: this.url }).then((data) => {
this.oaoMessage.splice(0, this.oaoMessage.length)
// this.oaoMessage.splice(0, this.oaoMessage.length)
this.displayConfigData.forEach(element => {
if (element.divPosition.includes('TOP') && element.deviceSpecParams[0]) {
// div
@ -576,6 +591,27 @@ export default {
show: false
})
}
} else if (element.divPosition.includes('OAO')) {
const wenduParamId = element.deviceSpecParams.find((item) => { return item.paramName === '温度' })?.paramId
const siduParamId = element.deviceSpecParams.find((item) => { return item.paramName === '湿度' })?.paramId
let wendu = {}
let sidu = {}
if (wenduParamId) {
wendu = data.find((item) => {
return item.property_id === wenduParamId && item.device_id === element.deviceInfo.deviceId
})
}
if (siduParamId) {
sidu = data.find((item) => {
return item.property_id === siduParamId && item.device_id === element.deviceInfo.deviceId
})
}
this.$set(this.oaoMessage, element.divPosition, {
show: true,
wendu: (wendu?.curvalue) ? (Math.round(wendu?.curvalue)) : '-',
sidu: (sidu?.curvalue) ? (Math.round(sidu?.curvalue)) : '-',
alarmState: (wendu && wendu.curstatus > 0) || (sidu && sidu.curstatus > 0)
})
}
})
})

52
src/views/storeManage/deviceManage/module/deviceDetail.vue

@ -164,7 +164,8 @@
<el-table-column align="center" prop="storeroomId.name" label="所属区域" width="100" show-overflow-tooltip />
<el-table-column align="center" label="设备状态" width="100">
<template slot-scope="scope">
<span :class="{ 'spk-a': scope.row.deviceState === 1, 'off-line': scope.row.deviceState !== 1 }" />
<span v-if="scope.row.deviceState === null" class="el-icon-loading" />
<span v-else :class="{ 'spk-a': scope.row.deviceState === 1, 'off-line': scope.row.deviceState !== 1 }" />
</template>
</el-table-column>
<el-table-column align="center" prop="deviceTypeId.name" label="设备类型" show-overflow-tooltip />
@ -434,11 +435,60 @@ export default {
},
// isLinkagenull,isLinkage.lend
[CRUD.HOOK.afterRefresh](crud) {
console.log('crud.data', crud.data)
let selectedElementId = null
crud.data.forEach(element => {
element.isLinkage = { stateType: 1, lend: null, borrow: null, inBound: null, outBound: null }
element.isCallback = { stateType: 2, lend: null, borrow: null, inBound: null, outBound: null }
element.deviceState = null
// 线
// 1. 7305DE3D273B0CAC079538
// 2. 65D1886B0F864291766421
// 线
// 1.RFID 3B85FA21FDAFBB618B5D40
// deviceTypeId.id
// 1. DD656054BE3D1DF1E2F1FC
// 2.RFID E2767FEACA9CE0E3B16B89
// 3.E58C8D7C896BCB9A408A78湿 7882487E0C15304A3758AF 250AE644EC43E4EC954A81
if (element.deviceTypeId.id === '7305DE3D273B0CAC079538' || element.deviceTypeId.id === '65D1886B0F864291766421') {
// +
element.deviceState = 1
} else if (element.deviceTypeId.id === '3B85FA21FDAFBB618B5D40') {
// RFID
element.deviceState = 0
} else if (element.deviceTypeId.id === 'DD656054BE3D1DF1E2F1FC') {
//
this.getDeviceState(element)
} else if (element.deviceTypeId.id === 'E2767FEACA9CE0E3B16B89') {
// RFID
this.getDeviceState(element)
} else if (element.deviceTypeId.id === 'E58C8D7C896BCB9A408A78' || element.deviceTypeId.id === '7882487E0C15304A3758AF' || element.deviceTypeId.id === '250AE644EC43E4EC954A81') {
selectedElementId = element.id
}
})
if (selectedElementId) {
crudDevice.FetchIsOnline({ deviceId: selectedElementId })
.then((data) => {
crud.data.forEach(element => {
if (element.deviceTypeId.id === 'E58C8D7C896BCB9A408A78' || element.deviceTypeId.id === '7882487E0C15304A3758AF' || element.deviceTypeId.id === '250AE644EC43E4EC954A81') {
element.deviceState = data === true ? 1 : 0
}
})
})
.catch((error) => {
console.error(error)
})
}
},
getDeviceState(element) {
crudDevice.FetchIsOnline({ deviceId: element.id }).then((data) => {
element.deviceState = data === true ? 1 : 0
}).catch((error) => {
console.error(error)
})
},
//
[CRUD.HOOK.afterValidateCU](crud) {
if (crud.status.edit === 1) {

36
src/views/storeManage/levelManage/index.vue

@ -8,24 +8,7 @@
</p>
<div>
<el-input
v-model="keyWord"
size="small"
clearable
placeholder="请输入关键词"
style="width: 300px;margin-right:10px;padding-left:10px"
class="input-prepend filter-item"
@keyup.enter.native="crud.toQuery"
>
<el-select slot="prepend" v-model="optionVal" style="width: 120px">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-input>
<el-input v-model="query" clearable size="small" placeholder="请输入" prefix-icon="el-icon-search" style="width: 200px;" class="filter-item" @keyup.enter.native="crud.toQuery" @clear="crud.toQuery" />
<rrOperation />
<el-button type="primary" class="iconfont icon-jiechubangding-fanbai" size="mini" :disabled="crud.selections.length !== 1" @click="bindingTag(crud.selections)">绑定标签</el-button>
</div>
@ -97,7 +80,7 @@ export default {
del: false,
download: true
},
sort: ['areaNo,asc', 'columnRowNo,asc', 'direction,desc', 'partNo,asc', 'rowNo,asc']
sort: ['area_no,asc', 'column_row_no,asc', 'direction,desc', 'part_no,asc', 'row_no,asc']
})
]
},
@ -105,12 +88,7 @@ export default {
return {
deviceInfo: {},
storeroomName: '',
keyWord: '',
optionVal: 'positionName',
options: [
{ value: 'positionName', label: '层位名称' },
{ value: 'position', label: '层位编号' }
]
query: null
}
},
created() {
@ -118,13 +96,7 @@ export default {
methods: {
[CRUD.HOOK.beforeRefresh]() {
this.crud.query.deviceInfoId = this.deviceInfo.id
this.crud.query.positionName = null
this.crud.query.position = null
if (this.optionVal === 'position') {
this.crud.query.position = this.keyWord
} else if (this.optionVal === 'positionName') {
this.crud.query.positionName = this.keyWord
}
this.crud.query.query = this.query
},
handleNodeClick(data) {
this.deviceInfo = data

Loading…
Cancel
Save