Browse Source

3D库房档案库数据显示 定时请求

master
z_yu 3 years ago
parent
commit
e1d88fc602
  1. 23
      src/views/storeManage/deviceManage/module/deviceDetail.vue
  2. 7
      src/views/storeManage/warehouse3D/archivesStorage/index.vue
  3. 42
      src/views/storeManage/warehouse3DConfig/index.vue

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

@ -16,7 +16,7 @@
<template v-slot:rightButtonGroup> <template v-slot:rightButtonGroup>
<div class="archives-handler-btn"> <div class="archives-handler-btn">
<el-button class="binding-mac-btn iconfont icon-bangdingshebei-fanbai" type="primary" :disabled="crud.selections.length !== 1 || (crud.selections[0].deviceTypeId && crud.selections[0].deviceTypeId.name !== '桌面式RFID读写器')" @click="bindingMac()">绑定设备</el-button> <el-button class="binding-mac-btn iconfont icon-bangdingshebei-fanbai" type="primary" :disabled="crud.selections.length !== 1 || (crud.selections[0].deviceTypeId && crud.selections[0].deviceTypeId.name !== '桌面式RFID读写器')" @click="bindingMac()">绑定设备</el-button>
<el-button class="binding-param-btn iconfont icon-bangdingcanshu-fanbai" type="primary" :disabled="crud.selections.length !== 1 || (crud.selections[0].deviceTypeId && (crud.selections[0].deviceTypeId.name !== '空调' && crud.selections[0].deviceTypeId.name !== '恒湿机' && crud.selections[0].deviceTypeId.name !== '漏水传感器' && crud.selections[0].deviceTypeId.name !== '温湿度感应器' && crud.selections[0].deviceTypeId.name !== '空气质量检测设备'))" @click="bindingParam(crud.selections[0].id)">绑定参数</el-button>
<el-button class="binding-param-btn iconfont icon-bangdingcanshu-fanbai" type="primary" :disabled="crud.selections.length !== 1 || (crud.selections[0].deviceTypeId && (crud.selections[0].deviceTypeId.name !== '漏水传感器' && crud.selections[0].deviceTypeId.name !== '温湿度感应器' && crud.selections[0].deviceTypeId.name !== '空气质量检测设备'))" @click="bindingParam(crud.selections[0].id)">绑定参数</el-button>
</div> </div>
</template> </template>
</crudOperation> </crudOperation>
@ -289,14 +289,14 @@ export default {
} }
}, },
rules() { rules() {
const checkDeviceIp = (rule, value, callback) => {
const reg = /^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$/
if (reg.test(value)) {
callback()
} else {
callback(new Error('设备IP格式错误'))
}
}
// const checkDeviceIp = (rule, value, callback) => {
// const reg = /^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$/
// if (reg.test(value)) {
// callback()
// } else {
// callback(new Error('IP'))
// }
// }
const checkDevicePort = (rule, value, callback) => { const checkDevicePort = (rule, value, callback) => {
const reg = /^([0-9]|[1-9]\d{1,3}|[1-5]\d{4}|6[0-4]\d{4}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/ const reg = /^([0-9]|[1-9]\d{1,3}|[1-5]\d{4}|6[0-4]\d{4}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/
if (reg.test(value)) { if (reg.test(value)) {
@ -321,8 +321,9 @@ export default {
} }
if (this.selectedDeviceType === '密集架' || this.selectedDeviceType === '回转柜' || this.selectedDeviceType === '摄像头' || this.isInsidedevices) { if (this.selectedDeviceType === '密集架' || this.selectedDeviceType === '回转柜' || this.selectedDeviceType === '摄像头' || this.isInsidedevices) {
this.$set(validateRule, 'deviceIp', [ this.$set(validateRule, 'deviceIp', [
{ required: true, message: '请输入接口IP', trigger: 'blur' },
{ validator: checkDeviceIp, trigger: 'blur' }
{ required: true, message: '请输入接口IP', trigger: 'blur' }
// ,
// { validator: checkDeviceIp, trigger: 'blur' }
]) ])
this.$set(validateRule, 'devicePort', [ this.$set(validateRule, 'devicePort', [
{ required: true, message: '请输入端口号', trigger: 'blur' }, { required: true, message: '请输入端口号', trigger: 'blur' },

7
src/views/storeManage/warehouse3D/archivesStorage/index.vue

@ -181,7 +181,7 @@ export default {
} }
window.addEventListener('message', this.handleMessageDevice) window.addEventListener('message', this.handleMessageDevice)
// //
setInterval(async() => {
this.timer = setInterval(async() => {
await _this.getRealTimeData() await _this.getRealTimeData()
_this.handleAQI() _this.handleAQI()
}, 4000) }, 4000)
@ -247,10 +247,13 @@ export default {
} }
}, },
getRealTimeData() { getRealTimeData() {
if (this.allDeviceIds.length > 0) {
thirdApi.getRealTimeData({ ids: this.allDeviceIds, url: this.url }).then((data) => { thirdApi.getRealTimeData({ ids: this.allDeviceIds, url: this.url }).then((data) => {
this.oaoMessage.splice(0, this.oaoMessage.length) this.oaoMessage.splice(0, this.oaoMessage.length)
console.log(this.displayConfigData)
this.displayConfigData.forEach(element => { this.displayConfigData.forEach(element => {
if (element.divPosition.includes('TOP') && element.deviceSpecParams[0]) { if (element.divPosition.includes('TOP') && element.deviceSpecParams[0]) {
// div
const result = data.find((item) => { const result = data.find((item) => {
return item.property_id === element.deviceSpecParams[0].paramId && item.device_id === element.deviceInfo.deviceId return item.property_id === element.deviceSpecParams[0].paramId && item.device_id === element.deviceInfo.deviceId
}) })
@ -261,6 +264,7 @@ export default {
curstatus: result.curstatus curstatus: result.curstatus
}) })
} else { } else {
// 3D
const wenduParamId = element.deviceSpecParams.find((item) => { return item.paramName === '温度' })?.paramId const wenduParamId = element.deviceSpecParams.find((item) => { return item.paramName === '温度' })?.paramId
const siduParamId = element.deviceSpecParams.find((item) => { return item.paramName === '湿度' })?.paramId const siduParamId = element.deviceSpecParams.find((item) => { return item.paramName === '湿度' })?.paramId
let wendu = {} let wendu = {}
@ -287,6 +291,7 @@ export default {
} }
} }
} }
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

42
src/views/storeManage/warehouse3DConfig/index.vue

@ -42,7 +42,7 @@
</el-table> </el-table>
</div> </div>
<!-- 绑定参数对话框 --> <!-- 绑定参数对话框 -->
<el-dialog title="绑定参数" :visible.sync="dialogVisible">
<el-dialog title="绑定参数" :visible.sync="dialogVisible" @opened="opened">
<span class="dialog-right-top" /> <span class="dialog-right-top" />
<span class="dialog-left-bottom" /> <span class="dialog-left-bottom" />
<div class="setting-dialog"> <div class="setting-dialog">
@ -51,7 +51,7 @@
<!-- <input-select :options="options" @selectValue="handleSelectValue" /> --> <!-- <input-select :options="options" @selectValue="handleSelectValue" /> -->
<p class="form-first">{{ form.divPosition }}</p> <p class="form-first">{{ form.divPosition }}</p>
</el-form-item> </el-form-item>
<el-form-item label="设备绑定" prop="deviceInfo.id">
<el-form-item label="设备绑定" prop="deviceInfo">
<el-select v-model="form.deviceInfo.id" placeholder="请选择" clearable filterable @change="getParamsOptionsList"> <el-select v-model="form.deviceInfo.id" placeholder="请选择" clearable filterable @change="getParamsOptionsList">
<el-option v-for="item in devOptions" :key="item.value" :label="item.label" :value="item.value"> <el-option v-for="item in devOptions" :key="item.value" :label="item.label" :value="item.value">
<span style="float: left">{{ item.label }}&nbsp;-&nbsp;{{ item.info }}</span> <span style="float: left">{{ item.label }}&nbsp;-&nbsp;{{ item.info }}</span>
@ -87,6 +87,14 @@ import { getParams } from '@/api/storeManage/deviceManage/param'
import { getRooms } from '@/api/storeManage/deviceManage/storeroom' import { getRooms } from '@/api/storeManage/deviceManage/storeroom'
export default { export default {
data() { data() {
//
var checkDeviceInfo = (rule, value, callback) => {
if (!this.form.deviceInfo.id) {
callback(new Error('绑定设备不可为空!'))
} else {
callback()
}
}
return { return {
room: '选项1', room: '选项1',
// //
@ -95,7 +103,8 @@ export default {
selections: [], selections: [],
dialogVisible: false, dialogVisible: false,
cameraTypeId: '', cameraTypeId: '',
airEquipmentTypeId: '',
airEquipmentTypeId: '', //
temperaSensorTypeId: '', // 湿
form: { deviceInfo: {}}, form: { deviceInfo: {}},
// //
devVal: '', devVal: '',
@ -105,7 +114,7 @@ export default {
paramsOptions: [], paramsOptions: [],
rules: { rules: {
deviceInfo: [ deviceInfo: [
{ required: true, message: '请选择设备', trigger: 'blur' }
{ required: true, validator: checkDeviceInfo, trigger: 'change' }
] ]
} }
} }
@ -120,6 +129,7 @@ export default {
crudDevice.getDeviceType().then((data) => { crudDevice.getDeviceType().then((data) => {
this.cameraTypeId = data.find((x) => { return x.name === '摄像头' }).id this.cameraTypeId = data.find((x) => { return x.name === '摄像头' }).id
this.airEquipmentTypeId = data.find((x) => { return x.name === '空气质量检测设备' }).id this.airEquipmentTypeId = data.find((x) => { return x.name === '空气质量检测设备' }).id
this.temperaSensorTypeId = data.find((x) => { return x.name === '温湿度感应器' }).id
}) })
}, },
methods: { methods: {
@ -135,6 +145,7 @@ export default {
} }
}, },
handleBindParam() { handleBindParam() {
console.log(1111)
if (this.selections.length === 1) { if (this.selections.length === 1) {
this.form = JSON.parse(JSON.stringify(this.selections[0])) this.form = JSON.parse(JSON.stringify(this.selections[0]))
if (!this.form.deviceInfo) { if (!this.form.deviceInfo) {
@ -144,8 +155,10 @@ export default {
const isCAM = this.form.divPosition.includes('CAM') const isCAM = this.form.divPosition.includes('CAM')
if (isCAM) { if (isCAM) {
deviceTypeId = this.cameraTypeId deviceTypeId = this.cameraTypeId
} else {
} else if (this.form.divPosition.includes('TOP')) {
deviceTypeId = this.airEquipmentTypeId deviceTypeId = this.airEquipmentTypeId
} else {
deviceTypeId = this.temperaSensorTypeId
} }
// //
crudDevice.getDeviceList({ storeroomId: this.room, deviceTypeId: deviceTypeId }).then((data) => { crudDevice.getDeviceList({ storeroomId: this.room, deviceTypeId: deviceTypeId }).then((data) => {
@ -157,7 +170,15 @@ export default {
}) })
// 湿 // 湿
if (!isCAM && this.form.deviceInfo.id) { if (!isCAM && this.form.deviceInfo.id) {
//
this.getParamsOptionsList() this.getParamsOptionsList()
} else {
this.paramsOptions.splice(0, this.paramsOptions.length)
if (this.form.divPosition.includes('TOP')) {
this.form.deviceSpecParams = ''
} else {
this.form.deviceSpecParams.splice(0, this.form.deviceSpecParams.length)
}
} }
if (this.form.deviceSpecParams && this.form.deviceSpecParams.length > 0) { if (this.form.deviceSpecParams && this.form.deviceSpecParams.length > 0) {
let formParams = this.form.deviceSpecParams.map((item) => { return item.id }) let formParams = this.form.deviceSpecParams.map((item) => { return item.id })
@ -179,6 +200,8 @@ export default {
this.$refs.table.toggleRowSelection(row) // this.$refs.table.toggleRowSelection(row) //
}, },
handleConfirm() { handleConfirm() {
this.$refs.formDom.validate((valid) => {
if (valid) {
this.form.deviceInfo = this.devOptions.find((option) => { return option.value === this.form.deviceInfo.id }).self this.form.deviceInfo = this.devOptions.find((option) => { return option.value === this.form.deviceInfo.id }).self
if (Array.isArray(this.form.deviceSpecParams)) { if (Array.isArray(this.form.deviceSpecParams)) {
const paramValues = this.paramsOptions.filter((option) => { return this.form.deviceSpecParams.includes(option.value) }) const paramValues = this.paramsOptions.filter((option) => { return this.form.deviceSpecParams.includes(option.value) })
@ -195,6 +218,10 @@ export default {
this.dialogVisible = false this.dialogVisible = false
this.getDisplayConfigList() this.getDisplayConfigList()
}) })
} else {
return false
}
})
}, },
getDisplayConfigList() { getDisplayConfigList() {
displayConfigApi.list({ storeroomId: this.room }).then((data) => { displayConfigApi.list({ storeroomId: this.room }).then((data) => {
@ -202,10 +229,15 @@ export default {
}) })
}, },
getParamsOptionsList() { getParamsOptionsList() {
if (this.form.deviceInfo.id) {
getParams({ deviceInfoId: this.form.deviceInfo.id }).then((data) => { getParams({ deviceInfoId: this.form.deviceInfo.id }).then((data) => {
this.paramsOptions = data.map(data => { return { value: data.id, label: data.paramName, info: data.paramId, self: data } }) this.paramsOptions = data.map(data => { return { value: data.id, label: data.paramName, info: data.paramId, self: data } })
}) })
} }
},
opened() {
this.$refs.formDom.clearValidate()
}
} }
} }
</script> </script>

Loading…
Cancel
Save