Browse Source

0603需求更新修改

master
xuhuajiao 8 months ago
parent
commit
12fb857242
  1. 8
      .env.development
  2. 9
      src/api/home/device/index.js
  3. 16
      src/views/archivesManage/archivesList/archivesAnjuan/index.vue
  4. 12
      src/views/archivesManage/archivesList/archivesJuannei/index.vue
  5. 4
      src/views/archivesManage/archivesList/mixins/archives.js
  6. 4
      src/views/archivesManage/archivesSearch/index.vue
  7. 4
      src/views/archivesManage/lendManage/returnArchives/index.vue
  8. 65
      src/views/dashboard/PanelGroup.vue
  9. 3190
      src/views/dashboard/data.json
  10. 94
      src/views/environmentalScreen/index.vue
  11. 403
      src/views/home.vue
  12. 54
      src/views/storeManage/levelManage/index.vue
  13. 145
      src/views/system/logManage/deviceLog/index.vue
  14. 7
      src/views/system/logManage/index.vue

8
.env.development

@ -6,12 +6,12 @@ ENV = 'development'
# VUE_APP_BASE_API = 'http://192.168.99.107:7077'
# VUE_APP_WS_API = 'ws://192.168.99.107:7077'
VUE_APP_CAMERA_API = '192.168.99.107:3000'
VUE_APP_BASE_API = 'http://192.168.99.107:7070'
VUE_APP_WS_API = 'ws://192.168.99.107:7070'
#VUE_APP_BASE_API = 'http://192.168.99.107:7070'
#VUE_APP_WS_API = 'ws://192.168.99.107:7070'
# 许镇-本地服地址
#VUE_APP_BASE_API = 'http://192.168.99.67:7070'
#VUE_APP_WS_API = 'ws://192.168.99.67:7070'
VUE_APP_BASE_API = 'http://192.168.99.67:7070'
VUE_APP_WS_API = 'ws://192.168.99.67:7070'
# 是否启用 babel-plugin-dynamic-import-node插件

9
src/api/home/device/index.js

@ -6,4 +6,11 @@ export function getOnlineDevice() {
method: 'get'
})
}
export default { getOnlineDevice }
export function getDeviceOnoff() {
return request({
url: 'api/device/onoff',
method: 'get'
})
}
export default { getOnlineDevice, getDeviceOnoff }

16
src/views/archivesManage/archivesList/archivesAnjuan/index.vue

@ -345,13 +345,17 @@ export default {
{ value: 'queryTitle', label: '题名' },
{ value: 'archiveNo', label: '档号' },
{ value: 'responsibleby', label: '责任者' },
{ value: 'docNo', label: '发文字号 ' }
{ value: 'docNo', label: '发文字号 ' },
{ value: 'barcode', label: '条形码' },
{ value: 'folderLocation', label: '地址码' }
]
} else {
this.queryOption = [
{ value: 'queryTitle', label: '题名' },
{ value: 'archiveNo', label: '档号' },
{ value: 'archiveCtgNo', label: '实体分类号' }
{ value: 'archiveCtgNo', label: '实体分类号' },
{ value: 'barcode', label: '条形码' },
{ value: 'folderLocation', label: '地址码' }
]
}
this.anjuanInputSelect = this.queryOption[0].value
@ -377,6 +381,8 @@ export default {
this.query.responsibleby = ''
this.query.docNo = ''
this.query.documentNo = ''
this.query.barcode = ''
this.query.folderLocation = ''
switch (this.anjuanInputSelect) {
case 'queryTitle': //
this.query.queryTitle = this.anjuanQuery[this.anjuanInputSelect]
@ -393,6 +399,12 @@ export default {
case 'docNo': //
this.query.docNo = this.anjuanQuery[this.anjuanInputSelect]
break
case 'barcode': //
this.query.barcode = this.anjuanQuery[this.anjuanInputSelect]
break
case 'folderLocation': //
this.query.folderLocation = this.anjuanQuery[this.anjuanInputSelect]
break
}
this.getListCommon('anjuanData', 'anjuanTableHeight', 1)
},

12
src/views/archivesManage/archivesList/archivesJuannei/index.vue

@ -239,7 +239,9 @@ export default {
{ value: 'queryTitle', label: '题名' },
{ value: 'archiveNo', label: '档号' },
{ value: 'responsibleby', label: '责任者' },
{ value: 'documentNo', label: '文件编号 ' }
{ value: 'documentNo', label: '文件编号 ' },
{ value: 'barcode', label: '条形码' },
{ value: 'folderLocation', label: '地址码' }
],
juanneiInputSelect: '',
lengingVisible: false, //
@ -310,6 +312,8 @@ export default {
this.query.responsibleby = ''
this.query.docNo = ''
this.query.documentNo = ''
this.query.barcode = ''
this.query.folderLocation = ''
switch (this.juanneiInputSelect) {
case 'queryTitle': //
this.query.queryTitle = this.juanneiQuery[this.juanneiInputSelect]
@ -323,6 +327,12 @@ export default {
case 'documentNo': //
this.query.documentNo = this.juanneiQuery[this.juanneiInputSelect]
break
case 'barcode': //
this.query.barcode = this.juanneiQuery[this.juanneiInputSelect]
break
case 'folderLocation': //
this.query.folderLocation = this.juanneiQuery[this.juanneiInputSelect]
break
}
this.getListCommon('junneiData', 'juanneiTableHeight', 2)
},

4
src/views/archivesManage/archivesList/mixins/archives.js

@ -195,7 +195,9 @@ export const archivesCrud = {
'recordType': this.smartQuery.recordType,
'mediumType': this.smartQuery.mediumType,
'documentNo': this.query.documentNo,
'docNo': this.query.docNo
'docNo': this.query.docNo,
'barcode': this.query.barcode,
'folderLocation': this.query.folderLocation
}
FetchInitArchivesView(params).then(data => {
this.getTableDisplayFieldsLoading = false

4
src/views/archivesManage/archivesSearch/index.vue

@ -178,7 +178,9 @@ export default {
{ value: 'archive_year', label: '年度' },
{ value: 'security_class', label: '密级' },
{ value: 'retention', label: '保管期限' },
{ value: 'case_name', label: '盒名称' }
{ value: 'case_name', label: '盒名称' },
{ value: 'barcode', label: '条形码' },
{ value: 'folder_location', label: '地址码' }
],
page: {
total: 0,

4
src/views/archivesManage/lendManage/returnArchives/index.vue

@ -114,7 +114,9 @@ export default {
selections: [],
queryOption: [
{ value: 'orderNo', label: '单据号' },
{ value: 'borrowerName', label: '借阅人' }
{ value: 'borrowerName', label: '借阅人' },
{ value: 'caseName', label: '档案盒' },
{ value: 'barcode', label: '条形码' }
]
}
},

65
src/views/dashboard/PanelGroup.vue

@ -41,7 +41,8 @@
</div>
</el-col>
<el-col class="card-panel-col">
<div class="card-panel zaixianshebei" @click="handleSetLineChartData('device')">
<!-- @click="handleSetLineChartData('device')" -->
<div class="card-panel zaixianshebei" @click="getDeviceDetail('on')">
<div class="card-panel-icon-wrapper icon-shopping">
<svg-icon icon-class="zaixianshebei" class-name="card-panel-icon" />
</div>
@ -55,7 +56,8 @@
</div>
</el-col>
<el-col class="card-panel-col">
<div class="card-panel lixianshebei" @click="handleSetLineChartData('device')">
<!-- @click="handleSetLineChartData('device')" -->
<div class="card-panel lixianshebei" @click="getDeviceDetail('off')">
<div class="card-panel-icon-wrapper icon-shopping">
<svg-icon icon-class="lixianshebei" class-name="card-panel-icon" />
</div>
@ -68,6 +70,36 @@
</div>
</div>
</el-col>
<el-dialog :title="deviveTitle" :visible.sync="deviceVisible">
<span class="dialog-right-top" />
<span class="dialog-left-bottom" />
<div class="setting-dialog">
<el-table v-loading="tableLoading" :data="tableDeviceData" height="520px">
<el-table-column type="index" label="序号" align="center" width="60" />
<el-table-column align="center" prop="supplierId.name" label="品牌" width="100" show-overflow-tooltip />
<el-table-column prop="deviceName" label="设备名称" show-overflow-tooltip />
<el-table-column label="设备ID" show-overflow-tooltip>
<template slot-scope="scope">
<span v-if="scope.row.deviceId"> {{ scope.row.deviceId }} </span>
<span v-else></span>
</template>
</el-table-column>
<el-table-column align="center" label="接口IP" width="120" show-overflow-tooltip>
<template slot-scope="scope">
<span v-if="scope.row.deviceIp"> {{ scope.row.deviceIp }} </span>
<span v-else></span>
</template>
</el-table-column>
<el-table-column align="center" label="端口" width="90">
<template slot-scope="scope">
<span v-if="scope.row.devicePort"> {{ scope.row.devicePort }} </span>
<span v-else></span>
</template>
</el-table-column>
</el-table>
</div>
</el-dialog>
</el-row>
</template>
@ -75,7 +107,7 @@
import CountTo from 'vue-count-to'
import { FetchGetArchivesNum, FetchGetCaseNum } from '@/api/archivesManage/statistics'
import { getDeviceList } from '@/api/storeManage/deviceManage/device'
import { getOnlineDevice } from '@/api/home/device'
import { getOnlineDevice, getDeviceOnoff } from '@/api/home/device'
import { mapGetters } from 'vuex'
export default {
@ -89,7 +121,11 @@ export default {
getDeviceFlag: false,
totalDeviceNum: 0,
onlineDeviceNum: 0,
offlineDeviceNum: 0
offlineDeviceNum: 0,
deviveTitle: '在线设备',
deviceVisible: false,
tableLoading: false,
tableDeviceData: []
}
},
computed: {
@ -140,6 +176,23 @@ export default {
}
}
},
getDeviceDetail(type) {
this.tableLoading = true
this.deviceVisible = true
getDeviceOnoff().then(data => {
if (type === 'on') {
this.deviveTitle = '在线设备'
this.tableDeviceData = this.data.online
} else {
this.deviveTitle = '离线设备'
this.tableDeviceData = this.data.offline
}
setTimeout(() => {
this.tableLoading = false
}, 1000)
})
},
//
handleArchivesNum() {
FetchGetArchivesNum().then(data => {
@ -341,4 +394,8 @@ export default {
}
}
}
::v-deep .el-dialog {
width: 950px;
}
</style>

3190
src/views/dashboard/data.json
File diff suppressed because it is too large
View File

94
src/views/environmentalScreen/index.vue

@ -38,61 +38,61 @@
</div>
</li>
<!-- 7F 现行文件室 / 信息技术室 -->
<li v-show="(bannerIndex === 4 || bannerIndex === 5) && topDisplayData.DXW_DIV_TOP_003.show" :class="{ 'li-warn': topDisplayData.DXW_DIV_TOP_003.curstatus > 0 }">
<li v-show="(bannerIndex === 4 || bannerIndex === 5) && topDisplayData.XXW_DIV_TOP_003.show" :class="{ 'li-warn': topDisplayData.XXW_DIV_TOP_003.curstatus > 0 }">
<svg-icon icon-class="co2" class-name="msg-list-svg" />
<div class="msg-txt">
<span class="msg-list-num">{{ topDisplayData.DXW_DIV_TOP_003.curValue }}</span>
<p class="msg-list-unit">CO2 {{ topDisplayData.DXW_DIV_TOP_003.unit }}</p>
<span class="msg-list-num">{{ topDisplayData.XXW_DIV_TOP_003.curValue }}</span>
<p class="msg-list-unit">CO2 {{ topDisplayData.XXW_DIV_TOP_003.unit }}</p>
</div>
</li>
<li v-show="(bannerIndex === 4 || bannerIndex === 5) && topDisplayData.DXW_DIV_TOP_004.show" :class="{ 'li-warn': topDisplayData.DXW_DIV_TOP_004.curstatus > 0 }">
<li v-show="(bannerIndex === 4 || bannerIndex === 5) && topDisplayData.XXW_DIV_TOP_004.show" :class="{ 'li-warn': topDisplayData.XXW_DIV_TOP_004.curstatus > 0 }">
<svg-icon icon-class="voc" class-name="msg-list-svg" />
<div class="msg-txt">
<span class="msg-list-num">{{ topDisplayData.DXW_DIV_TOP_004.curValue }}</span>
<p class="msg-list-unit">VOC {{ topDisplayData.DXW_DIV_TOP_004.unit }}</p>
<span class="msg-list-num">{{ topDisplayData.XXW_DIV_TOP_004.curValue }}</span>
<p class="msg-list-unit">VOC {{ topDisplayData.XXW_DIV_TOP_004.unit }}</p>
</div>
</li>
<li v-show="(bannerIndex === 4 || bannerIndex === 5) && topDisplayData.DXW_DIV_TOP_005.show" :class="{ 'li-warn': topDisplayData.DXW_DIV_TOP_005.curstatus > 0 }" class="msg-pm">
<li v-show="(bannerIndex === 4 || bannerIndex === 5) && topDisplayData.XXW_DIV_TOP_005.show" :class="{ 'li-warn': topDisplayData.XXW_DIV_TOP_005.curstatus > 0 }" class="msg-pm">
<svg-icon icon-class="pm25" class-name="msg-list-svg" />
<div class="msg-txt">
<span class="msg-list-num">{{ topDisplayData.DXW_DIV_TOP_005.curValue }}</span>
<p class="msg-list-unit">PM2.5 {{ topDisplayData.DXW_DIV_TOP_005.unit }}</p>
<span class="msg-list-num">{{ topDisplayData.XXW_DIV_TOP_005.curValue }}</span>
<p class="msg-list-unit">PM2.5 {{ topDisplayData.XXW_DIV_TOP_005.unit }}</p>
</div>
</li>
<li v-show="(bannerIndex === 4 || bannerIndex === 5) && topDisplayData.DXW_DIV_TOP_006.show" :class="{ 'li-warn': topDisplayData.DXW_DIV_TOP_006.curstatus > 0 }" class="msg-pm">
<li v-show="(bannerIndex === 4 || bannerIndex === 5) && topDisplayData.XXW_DIV_TOP_006.show" :class="{ 'li-warn': topDisplayData.XXW_DIV_TOP_006.curstatus > 0 }" class="msg-pm">
<svg-icon icon-class="pm10" class-name="msg-list-svg" />
<div class="msg-txt">
<span class="msg-list-num">{{ topDisplayData.DXW_DIV_TOP_006.curValue }}</span>
<p class="msg-list-unit">PM10 {{ topDisplayData.DXW_DIV_TOP_006.unit }}</p>
<span class="msg-list-num">{{ topDisplayData.XXW_DIV_TOP_006.curValue }}</span>
<p class="msg-list-unit">PM10 {{ topDisplayData.XXW_DIV_TOP_006.unit }}</p>
</div>
</li>
<!-- 7F 待销文件室 -->
<li v-show="bannerIndex === 6 && topDisplayData.XXW_DIV_TOP_003.show" :class="{ 'li-warn': topDisplayData.XXW_DIV_TOP_003.curstatus > 0 }">
<li v-show="bannerIndex === 6 && topDisplayData.DXW_DIV_TOP_003.show" :class="{ 'li-warn': topDisplayData.DXW_DIV_TOP_003.curstatus > 0 }">
<svg-icon icon-class="co2" class-name="msg-list-svg" />
<div class="msg-txt">
<span class="msg-list-num">{{ topDisplayData.XXW_DIV_TOP_003.curValue }}</span>
<p class="msg-list-unit">CO2 {{ topDisplayData.XXW_DIV_TOP_003.unit }}</p>
<span class="msg-list-num">{{ topDisplayData.DXW_DIV_TOP_003.curValue }}</span>
<p class="msg-list-unit">CO2 {{ topDisplayData.DXW_DIV_TOP_003.unit }}</p>
</div>
</li>
<li v-show="bannerIndex === 6 && topDisplayData.XXW_DIV_TOP_004.show" :class="{ 'li-warn': topDisplayData.XXW_DIV_TOP_004.curstatus > 0 }">
<li v-show="bannerIndex === 6 && topDisplayData.DXW_DIV_TOP_004.show" :class="{ 'li-warn': topDisplayData.DXW_DIV_TOP_004.curstatus > 0 }">
<svg-icon icon-class="voc" class-name="msg-list-svg" />
<div class="msg-txt">
<span class="msg-list-num">{{ topDisplayData.XXW_DIV_TOP_004.curValue }}</span>
<p class="msg-list-unit">VOC {{ topDisplayData.XXW_DIV_TOP_004.unit }}</p>
<span class="msg-list-num">{{ topDisplayData.DXW_DIV_TOP_004.curValue }}</span>
<p class="msg-list-unit">VOC {{ topDisplayData.DXW_DIV_TOP_004.unit }}</p>
</div>
</li>
<li v-show="bannerIndex === 6 && topDisplayData.XXW_DIV_TOP_005.show" :class="{ 'li-warn': topDisplayData.XXW_DIV_TOP_005.curstatus > 0 }" class="msg-pm">
<li v-show="bannerIndex === 6 && topDisplayData.DXW_DIV_TOP_005.show" :class="{ 'li-warn': topDisplayData.DXW_DIV_TOP_005.curstatus > 0 }" class="msg-pm">
<svg-icon icon-class="pm25" class-name="msg-list-svg" />
<div class="msg-txt">
<span class="msg-list-num">{{ topDisplayData.XXW_DIV_TOP_005.curValue }}</span>
<p class="msg-list-unit">PM2.5 {{ topDisplayData.XXW_DIV_TOP_005.unit }}</p>
<span class="msg-list-num">{{ topDisplayData.DXW_DIV_TOP_005.curValue }}</span>
<p class="msg-list-unit">PM2.5 {{ topDisplayData.DXW_DIV_TOP_005.unit }}</p>
</div>
</li>
<li v-show="bannerIndex === 6 && topDisplayData.XXW_DIV_TOP_006.show" :class="{ 'li-warn': topDisplayData.XXW_DIV_TOP_006.curstatus > 0 }" class="msg-pm">
<li v-show="bannerIndex === 6 && topDisplayData.DXW_DIV_TOP_006.show" :class="{ 'li-warn': topDisplayData.DXW_DIV_TOP_006.curstatus > 0 }" class="msg-pm">
<svg-icon icon-class="pm10" class-name="msg-list-svg" />
<div class="msg-txt">
<span class="msg-list-num">{{ topDisplayData.XXW_DIV_TOP_006.curValue }}</span>
<p class="msg-list-unit">PM10 {{ topDisplayData.XXW_DIV_TOP_006.unit }}</p>
<span class="msg-list-num">{{ topDisplayData.DXW_DIV_TOP_006.curValue }}</span>
<p class="msg-list-unit">PM10 {{ topDisplayData.DXW_DIV_TOP_006.unit }}</p>
</div>
</li>
</ul>
@ -139,20 +139,50 @@
</el-carousel>
<!-- <iframe id="myIframe" ref="myIframe" name="iframeMap" class="iframe_box" src="/webA/index.html" frameborder="0" scrolling="no" /> -->
<ul class="screen-env-list">
<li v-show="(bannerIndex === 0 || bannerIndex === 1 || bannerIndex === 2 || bannerIndex === 3) && topDisplayData.DAK_DIV_TOP_001.show" :class="{ 'li-warn': topDisplayData.DAK_DIV_TOP_001.curstatus > 0 }">
<li v-show="(bannerIndex === 0 || bannerIndex === 1 ) && topDisplayData.DAK_DIV_TOP_001.show" :class="{ 'li-warn': topDisplayData.DAK_DIV_TOP_001.curstatus > 0 }">
<svg-icon icon-class="temperature" class-name="msg-list-svg" />
<div class="msg-txt">
<span class="msg-list-num">{{ topDisplayData.DAK_DIV_TOP_001.curValue }}</span>
<p class="msg-list-unit">温度 {{ topDisplayData.DAK_DIV_TOP_001.unit }}</p>
</div>
</li>
<li v-show="(bannerIndex === 0 || bannerIndex === 1 || bannerIndex === 2 || bannerIndex === 3)&& topDisplayData.DAK_DIV_TOP_002.show" :class="{ 'li-warn': topDisplayData.DAK_DIV_TOP_002.curstatus > 0 }">
<li v-show="(bannerIndex === 0 || bannerIndex === 1 )&& topDisplayData.DAK_DIV_TOP_002.show" :class="{ 'li-warn': topDisplayData.DAK_DIV_TOP_002.curstatus > 0 }">
<svg-icon icon-class="shidu" class-name="msg-list-svg" />
<div class="msg-txt">
<span class="msg-list-num">{{ topDisplayData.DAK_DIV_TOP_002.curValue }}</span>
<p class="msg-list-unit">湿度 {{ topDisplayData.DAK_DIV_TOP_002.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 }">
<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>
</div>
</li>
<li v-show="bannerIndex === 2 && topDisplayData.ZLS_MO_OAO_001.show" :class="{ 'li-warn': topDisplayData.ZLS_MO_OAO_001.curstatus > 0 }">
<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>
</div>
</li>
<!-- 阅览室 -->
<li v-show="bannerIndex === 3 && topDisplayData.YLS_MO_OAO_001.show" :class="{ 'li-warn': topDisplayData.YLS_MO_OAO_001.curstatus > 0 }">
<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>
</div>
</li>
<li v-show="bannerIndex === 3 && topDisplayData.YLS_MO_OAO_001.show" :class="{ 'li-warn': topDisplayData.YLS_MO_OAO_001.curstatus > 0 }">
<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>
</div>
</li>
<!-- 7F 现行文件室 / 信息技术室 -->
<li v-show="(bannerIndex === 4 || bannerIndex === 5) && topDisplayData.XXW_DIV_TOP_001.show" :class="{ 'li-warn': topDisplayData.XXW_DIV_TOP_001.curstatus > 0 }">
<svg-icon icon-class="temperature" class-name="msg-list-svg" />
@ -430,6 +460,18 @@ 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,

403
src/views/home.vue

@ -7,7 +7,7 @@
<line-chart :chart-data="lineChartData" />
</el-row> -->
<el-row :gutter="20" style="margin-bottom:20px;height: 152px;">
<el-col :xs="24" :sm="24" :lg="16">
<el-col :xs="24" :sm="24" :lg="8">
<div class="container-left search-area">
<span class="right-top-line" />
<span class="left-bottom-line" />
@ -15,9 +15,146 @@
</div>
</el-col>
<el-col :xs="24" :sm="24" :lg="8">
<!-- <div class="chart-wrapper">
<pie-chart />
</div> -->
<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">
<p class="title-arrow">
<i class="iconfont icon-kongqizhiliangshuju" />环境数据
</p>
</h3>
<div class="home-floor-tab">
<p :class="{ 'active-floor': floorEnvIndex == 0 }" @click="changeFloorEnvTab(0)">5楼</p>
<p :class="{ 'active-floor': floorEnvIndex == 1 }" @click="changeFloorEnvTab(1)">7楼</p>
</div>
<el-carousel ref="carouselEnvRef" trigger="click" :interval="10000" indicator-position="none" height="110px" arrow="never" @change="handleEnvChange">
<el-carousel-item>
<div class="warehouse-tab" style="height: calc(100%); padding-left: 15px;">
<div class="five-bottom">
<p class="env-title">档案库</p>
<ul class="leakage-list">
<li :class="{ 'leakage-warn': topDisplayData.DAK_DIV_TOP_001.curstatus > 0 }">
<p>温度</p>
<span>{{ topDisplayData.DAK_DIV_TOP_001.curValue }}</span>
</li>
<li :class="{ 'leakage-warn': topDisplayData.DAK_DIV_TOP_002.curstatus > 0 }">
<p>湿度</p>
<span>{{ topDisplayData.DAK_DIV_TOP_002.curValue }}</span>
</li>
<li :class="{ 'leakage-warn': topDisplayData.DAK_DIV_TOP_003.curstatus > 0 }">
<p>CO2</p>
<span>{{ topDisplayData.DAK_DIV_TOP_003.curValue }}</span>
</li>
<li :class="{ 'leakage-warn': topDisplayData.DAK_DIV_TOP_005.curstatus > 0 }">
<p>PM2.5</p>
<span>{{ topDisplayData.DAK_DIV_TOP_005.curValue }}</span>
</li>
<li :class="{ 'leakage-warn': topDisplayData.DAK_DIV_TOP_006.curstatus > 0 }">
<p>PM10</p>
<span>{{ topDisplayData.DAK_DIV_TOP_006.curValue }}</span>
</li>
<li :class="{ 'leakage-warn': topDisplayData.DAK_DIV_TOP_004.curstatus > 0 }">
<p>VOC</p>
<span>{{ topDisplayData.DAK_DIV_TOP_004.curValue }}</span>
</li>
</ul>
</div>
<div style="display: flex; justify-content:space-between; align-items: center;">
<div class="five-bottom">
<p class="env-title">整理室</p>
<ul class="leakage-list">
<li :class="{ 'leakage-warn': topDisplayData.ZLS_MO_OAO_001.curstatus > 0 }">
<p>温度</p>
<span>{{ topDisplayData.ZLS_MO_OAO_001.curValue }}</span>
</li>
<li :class="{ 'leakage-warn': topDisplayData.ZLS_MO_OAO_001.curstatus > 0 }">
<p>湿度</p>
<span>{{ topDisplayData.ZLS_MO_OAO_001.curValue }}</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 }">
<p>温度</p>
<span>{{ topDisplayData.YLS_MO_OAO_001.curValue }}</span>
</li>
<li :class="{ 'leakage-warn': topDisplayData.YLS_MO_OAO_001.curstatus > 0 }">
<p>湿度</p>
<span>{{ topDisplayData.YLS_MO_OAO_001.curValue }}</span>
</li>
</ul>
</div>
</div>
</div>
</el-carousel-item>
<el-carousel-item>
<div class="warehouse-tab" style="height: calc(100%); padding-left: 15px;">
<div style="display: flex; justify-content: flex-start; align-items: center;">
<p class="env-title">现行<br>文件室</p>
<ul class="leakage-list">
<li :class="{ 'leakage-warn': topDisplayData.XXW_DIV_TOP_001.curstatus > 0 }">
<p>温度</p>
<span>{{ topDisplayData.XXW_DIV_TOP_001.curValue }}</span>
</li>
<li :class="{ 'leakage-warn': topDisplayData.XXW_DIV_TOP_002.curstatus > 0 }">
<p>湿度</p>
<span>{{ topDisplayData.XXW_DIV_TOP_002.curValue }}</span>
</li>
<li :class="{ 'leakage-warn': topDisplayData.XXW_DIV_TOP_003.curstatus > 0 }">
<p>CO2</p>
<span>{{ topDisplayData.XXW_DIV_TOP_003.curValue }}</span>
</li>
<li :class="{ 'leakage-warn': topDisplayData.XXW_DIV_TOP_005.curstatus > 0 }">
<p>PM2.5</p>
<span>{{ topDisplayData.XXW_DIV_TOP_005.curValue }}</span>
</li>
<li :class="{ 'leakage-warn': topDisplayData.XXW_DIV_TOP_006.curstatus > 0 }">
<p>PM10</p>
<span>{{ topDisplayData.XXW_DIV_TOP_006.curValue }}</span>
</li>
<li :class="{ 'leakage-warn': topDisplayData.XXW_DIV_TOP_004.curstatus > 0 }">
<p>VOC</p>
<span>{{ topDisplayData.XXW_DIV_TOP_004.curValue }}</span>
</li>
</ul>
</div>
<div style="display: flex; justify-content: flex-start; align-items: center;">
<p class="env-title">待销<br>文件室</p>
<ul class="leakage-list">
<li :class="{ 'leakage-warn': topDisplayData.DXW_DIV_TOP_001.curstatus > 0 }">
<p>温度</p>
<span>{{ topDisplayData.DXW_DIV_TOP_001.curValue }}</span>
</li>
<li :class="{ 'leakage-warn': topDisplayData.DXW_DIV_TOP_002.curstatus > 0 }">
<p>湿度</p>
<span>{{ topDisplayData.DXW_DIV_TOP_002.curValue }}</span>
</li>
<li :class="{ 'leakage-warn': topDisplayData.XXW_DIV_TOP_003.curstatus > 0 }">
<p>CO2</p>
<span>{{ topDisplayData.XXW_DIV_TOP_003.curValue }}</span>
</li>
<li :class="{ 'leakage-warn': topDisplayData.XXW_DIV_TOP_005.curstatus > 0 }">
<p>PM2.5</p>
<span>{{ topDisplayData.XXW_DIV_TOP_005.curValue }}</span>
</li>
<li :class="{ 'leakage-warn': topDisplayData.XXW_DIV_TOP_006.curstatus > 0 }">
<p>PM10</p>
<span>{{ topDisplayData.XXW_DIV_TOP_006.curValue }}</span>
</li>
<li :class="{ 'leakage-warn': topDisplayData.DXW_DIV_TOP_004.curstatus > 0 }">
<p>VOC</p>
<span>{{ topDisplayData.DXW_DIV_TOP_004.curValue }}</span>
</li>
</ul>
</div>
</div>
</el-carousel-item>
</el-carousel>
</div>
</el-col>
<el-col :xs="24" :sm="24" :lg="8">
<div class="container-left" style="height: 100%;margin: 0; position: relative;">
<span class="right-top-line" />
<span class="left-bottom-line" />
@ -170,6 +307,8 @@ import SecurityDoor from '@/views/components/SecurityDoor'
import SearchAcrives from '@/views/archivesManage/archivesSearch/index'
import { statisticsCrud } from '@/views/system/archiveStatistics/mixins/statistics'
import { FetchWaitBorrower } from '@/api/archivesManage/lendManage'
import displayConfigApi from '@/api/storeManage/displayConfig'
import thirdApi from '@/api/thirdApi'
import { mapGetters } from 'vuex'
@ -189,7 +328,137 @@ export default {
return {
waitBorrowerData: [],
floorIndex: 0,
isHomeSearch: false
floorEnvIndex: 0,
isHomeSearch: false,
allDisplayConfigData: [],
displayConfigData: [],
url: '',
allDeviceIds: [],
oaoMessage: [],
topDisplayData: {
DAK_DIV_TOP_001: {
show: false,
curValue: '',
unit: '',
curstatus: 0
},
DAK_DIV_TOP_002: {
show: false,
curValue: '',
unit: '',
curstatus: 0
},
DAK_DIV_TOP_003: {
show: false,
curValue: '',
unit: '',
curstatus: 0
},
DAK_DIV_TOP_004: {
show: false,
curValue: '',
unit: '',
curstatus: 0
},
DAK_DIV_TOP_005: {
show: false,
curValue: '',
unit: '',
curstatus: 0
},
DAK_DIV_TOP_006: {
show: false,
curValue: '',
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,
curValue: '',
unit: '',
curstatus: 0
},
DXW_DIV_TOP_002: {
show: false,
curValue: '',
unit: '',
curstatus: 0
},
DXW_DIV_TOP_003: {
show: false,
curValue: '',
unit: '',
curstatus: 0
},
DXW_DIV_TOP_004: {
show: false,
curValue: '',
unit: '',
curstatus: 0
},
DXW_DIV_TOP_005: {
show: false,
curValue: '',
unit: '',
curstatus: 0
},
DXW_DIV_TOP_006: {
show: false,
curValue: '',
unit: '',
curstatus: 0
},
// 7F /
XXW_DIV_TOP_001: {
show: false,
curValue: '',
unit: '',
curstatus: 0
},
XXW_DIV_TOP_002: {
show: false,
curValue: '',
unit: '',
curstatus: 0
},
XXW_DIV_TOP_003: {
show: false,
curValue: '',
unit: '',
curstatus: 0
},
XXW_DIV_TOP_004: {
show: false,
curValue: '',
unit: '',
curstatus: 0
},
XXW_DIV_TOP_005: {
show: false,
curValue: '',
unit: '',
curstatus: 0
},
XXW_DIV_TOP_006: {
show: false,
curValue: '',
unit: '',
curstatus: 0
}
}
}
},
computed: {
@ -197,8 +466,19 @@ export default {
'roles'
])
},
created() {
async created() {
this.getWaitBorrower()
this.allDisplayConfigData = await displayConfigApi.list({ storeroomId: this.roomId })
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)
if (!this.url) {
this.url = 'http://' + element.deviceInfo.deviceIp + ':' + element.deviceInfo.devicePort
}
}
})
this.displayConfigData = this.allDisplayConfigData.filter((item) => { return item.isDisplay && item.bindState && item.deviceInfo && (item.divPosition.includes('OAO') || item.divPosition.includes('TOP') || item.divPosition.includes('LS')) })
await this.getRealTimeData()
},
mounted() {
},
@ -206,11 +486,19 @@ export default {
handleChange(index) {
this.floorIndex = index
},
handleEnvChange(index) {
this.floorEnvIndex = index
},
changeFloorTab(index) {
this.floorIndex = index
const carousel = this.$refs.carouselRef
carousel.setActiveItem(index)
},
changeFloorEnvTab(index) {
this.floorEnvIndex = index
const carousel = this.$refs.carouselEnvRef
carousel.setActiveItem(index)
},
// handleSetLineChartData(type) {
// this.lineChartData = lineChartData[type]
// },
@ -265,6 +553,33 @@ export default {
type: 'warning'
})
}
},
getRealTimeData() {
if (this.allDeviceIds.length > 0) {
thirdApi.getRealTimeData({ ids: this.allDeviceIds, url: this.url }).then((data) => {
this.oaoMessage.splice(0, this.oaoMessage.length)
this.displayConfigData.forEach(element => {
if (element.divPosition.includes('TOP') && element.deviceSpecParams[0]) {
// div
const result = data.find((item) => {
return item.property_id === element.deviceSpecParams[0].paramId && item.device_id === element.deviceInfo.deviceId
})
if (result) {
this.$set(this.topDisplayData, element.divPosition, {
show: true,
curValue: result.curvalue,
unit: result.unit,
curstatus: result.curstatus
})
} else {
this.$set(this.topDisplayData, element.divPosition, {
show: false
})
}
}
})
})
}
}
}
}
@ -397,7 +712,7 @@ export default {
justify-content: center;
}
::v-deep .search-main{
padding: 0 62px;
padding: 0 0 0 20px;
.head-container{
padding: 0;
width: 100% !important;
@ -431,4 +746,78 @@ export default {
}
}
}
.icon-kongqizhiliangshuju{
font-size: 14px;
color: #F65163;
margin-right: 6px
}
.env-title{
width: 50px;
height: 40px;
line-height: 20px;
text-align: center;
font-size: 12px;
margin: 10px 10px 0 0;
}
.leakage-list {
display: flex;
justify-content:flex-start;
flex: 1;
text-align: left;
font-size: 10px;
li {
position: relative;
display: flex;
justify-content: flex-start;
flex-wrap: wrap;
align-items: center;
width: 60px;
height: 40px;
border: 1px solid #3581cc;
background-color: #02255f;
border-radius: 2px;
padding: 4px;
margin: 10px 10px 0 0;
font-size: 12px;
&::before {
content: "";
position: absolute;
top: 2px;
right: 2px;
width: 0;
height: 0;
border-color: transparent #339cff;
border-width: 0 4px 4px 0;
border-style: solid;
}
p {
width: 100%;
}
span{
width: 100%;
color: #18B08F;
text-align: right;
}
&.leakage-warn {
border-color: #f65164;
box-shadow: inset 0px 0px 15px 1px #f65164;
color: #f65164;
&::before {
border-color: transparent #f65164;
}
span {
color: #f65164;
}
}
}
}
.five-bottom{
display: flex;
justify-content: flex-start;
align-items: center;
.env-title{
line-height: 40px;
}
}
</style>

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

@ -6,7 +6,27 @@
<svg-icon icon-class="warning" />
<span>温馨提示如需配置层位请直接前往库房设备管理进行设备维护</span>
</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>
<rrOperation />
<el-button type="primary" class="iconfont icon-jiechubangding-fanbai" size="mini" :disabled="crud.selections.length !== 1" @click="bindingTag(crud.selections)">绑定标签</el-button>
</div>
</div>
@ -57,19 +77,26 @@
</template>
<script>
import rrOperation from '@crud/RR.operation'
import DeviceTree from '@/views/components/DeviceTree'
import BindingTagDlg from '@/views/components/BindingTagDlg'
import CRUD, { presenter } from '@crud/crud'
import pagination from '@crud/Pagination'
export default {
name: 'LevelManage',
components: { DeviceTree, pagination, BindingTagDlg },
components: { DeviceTree, pagination, BindingTagDlg, rrOperation },
mixins: [presenter()],
cruds() {
return [
CRUD({
url: 'api/tag/list',
queryOnPresenterCreated: false,
optShow: {
add: false,
edit: false,
del: false,
download: true
},
sort: ['areaNo,asc', 'columnRowNo,asc', 'direction,desc', 'partNo,asc', 'rowNo,asc']
})
]
@ -77,7 +104,13 @@ export default {
data() {
return {
deviceInfo: {},
storeroomName: ''
storeroomName: '',
keyWord: '',
optionVal: 'positionName',
options: [
{ value: 'positionName', label: '层位名称' },
{ value: 'position', label: '层位编号' }
]
}
},
created() {
@ -85,6 +118,13 @@ 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
}
},
handleNodeClick(data) {
this.deviceInfo = data
@ -123,10 +163,12 @@ export default {
</script>
<style lang="scss" scoped>
@import "~@/assets/styles/archives-manage.scss";
.head-container {
display: flex;
justify-content: space-between;
align-items: center;
.el-button {
width: 106px;
height: 30px;
@ -141,6 +183,14 @@ export default {
}
}
}
::v-deep .input-prepend{
.el-select .el-input__inner{
padding-left: 22px !important;
}
.el-input__inner {
padding-left: 120px !important;
}
}
::v-deep .el-icon-more:before {
margin-right: 8px;
}

145
src/views/system/logManage/deviceLog/index.vue

@ -0,0 +1,145 @@
<template>
<div>
<div class="head-container">
<!-- <crudOperation /> -->
<!-- <el-button v-permission="permission.download" :loading="crud.downloadLoading" :disabled="!selections.length" size="mini" icon="el-icon-download" @click="handleDownload">导出</el-button> -->
<el-button :loading="crud.downloadLoading" size="mini" icon="el-icon-download" @click="handleDownload">导出</el-button>
<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: 100px" @keyup.enter.native="crud.toQuery"> -->
<el-select slot="prepend" v-model="optionVal" style="width: 80px">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-input>
<date-range-picker v-model="queryTime" class="date-item" />
<rrOperation />
</div>
<el-table
ref="table"
:data="crud.data"
style="width: 100%;"
height="calc(100vh - 356px)"
:cell-class-name="cell"
@row-click="clickRowHandler"
@selection-change="selectionChangeHandler"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column prop="storeCode" label="库房" align="center" min-width="150" />
<el-table-column prop="QuNo" label="区号" align="center" width="150" />
<el-table-column prop="usLevel" label="状态" align="center" min-width="60">
<template slot-scope="scope">
<span v-if="scope.row.usLevel===0" class="clear" style="width:56px">操作</span>
<span v-if="scope.row.usLevel===1" class="clear" style="width:56px">报警</span>
</template>
</el-table-column>
<el-table-column prop="i64Ts" label="发生时间" align="center" min-width="180">
<template slot-scope="scope">
<div>{{ scope.row.i64Ts | parseTime }}</div>
</template>
</el-table-column>
<el-table-column prop="cContext" label="日志信息" :show-overflow-tooltip="true" align="center" width="180" />
</el-table>
<pagination />
</div>
</template>
<script>
import rrOperation from '@crud/RR.operation'
import CRUD, { presenter, crud } from '@crud/crud'
import DateRangePicker from '@/components/DateRangePicker'
import pagination from '@crud/Pagination'
import { parseTime, saveAs, getBlob } from '@/utils/index'
import { mapGetters } from 'vuex'
import qs from 'qs'
export default {
name: 'DeviceLog',
components: { rrOperation, DateRangePicker, pagination },
mixins: [presenter(), crud()],
cruds() {
return CRUD({
url: 'api/alarmDeseCaBinetLog/list',
optShow: {
add: false,
edit: false,
del: false,
download: true
},
sort: []
})
},
data() {
return {
selections: [],
keyWord: '',
optionVal: 'QuNo',
options: [
{ value: 'QuNo', label: '区号' },
{ value: 'roomName', label: '库房' }
],
queryTime: []
}
},
computed: {
...mapGetters([
'baseApi'
])
},
methods: {
[CRUD.HOOK.beforeRefresh]() {
this.crud.query.roomName = null
this.crud.query.deviceName = null
this.crud.query.startTime = null
this.crud.query.endTime = null
if (this.optionVal === 'QuNo') {
this.crud.query.QuNo = this.keyWord
} else if (this.optionVal === 'roomName') {
this.crud.query.roomName = this.keyWord
}
if (this.queryTime.length > 0) {
this.crud.query.startTime = this.queryTime[0]
this.crud.query.endTime = this.queryTime[1]
}
},
//
handleDownload() {
this.crud.downloadLoading = true
const fileName = parseTime(new Date()) + '-密集架日志.xlsx'
getBlob(this.baseApi + '/api/securitydoor/exportSecurityDoorLog1List' + '?' + qs.stringify(this.crud.query, { indices: false }), function(blob) {
saveAs(blob, fileName)
})
this.crud.downloadLoading = false
},
clickRowHandler(row) {
this.$refs.table.toggleRowSelection(row) //
},
selectionChangeHandler(val) {
this.selections = val
},
cell({ row, columnIndex }) {
if (row.alarmLevel === 1 && columnIndex === 2) {
return 'have-clear'
} else if (row.alarmLevel === 0 && columnIndex === 2) {
return 'fail-clear'
}
}
}
}
</script>
<style lang="scss" scoped>
@import '~@/assets/styles/lend-manage.scss';
@import "~@/assets/styles/archives-manage.scss";
</style>

7
src/views/system/logManage/index.vue

@ -10,6 +10,7 @@
<li :class="{ 'active-tab-nav': activeIndex == 2 }" @click="changeActiveTab(2)">报警日志<i /></li>
<li :class="{ 'active-tab-nav': activeIndex == 3 }" @click="changeActiveTab(3)">通道门日志<i /></li>
<li :class="{ 'active-tab-nav': activeIndex == 4 }" @click="changeActiveTab(4)">门禁日志<i /></li>
<li :class="{ 'active-tab-nav': activeIndex == 5 }" @click="changeActiveTab(5)">密集架日志<i /></li>
<!-- <li :class="{ 'active-tab-nav': activeIndex == 4 }" @click="changeActiveTab(4)">接口访问日志<i /></li> -->
<!-- 最右侧装饰img -->
<span class="tab-right-img" />
@ -26,6 +27,7 @@ import warnLog from './warnLog/index.vue'
import doorLog from './doorLog/index.vue'
import accessDoorLog from './accessDoorLog/index.vue'
import portLog from './portLog/index.vue'
import deviceLog from './deviceLog/index.vue'
export default {
name: 'LogManage',
@ -35,7 +37,8 @@ export default {
warnLog,
doorLog,
portLog,
accessDoorLog
accessDoorLog,
deviceLog
},
data() {
return {
@ -54,6 +57,8 @@ export default {
return 'accessDoorLog'
} else if (this.activeIndex === 4) {
return 'doorLog'
} else if (this.activeIndex === 5) {
return 'deviceLog'
}
// else if (this.activeIndex === 4) {
// return 'portLog'

Loading…
Cancel
Save