Browse Source

标签机

master
xuhuajiao 2 months ago
parent
commit
b38ceffbba
  1. 9
      public/static/config.js
  2. 15
      src/api/home/alarm/index.js
  3. 27
      src/main.js
  4. 523
      src/views/archivesManage/caseManage/caseList/index-oldPrint.vue
  5. 68
      src/views/archivesManage/caseManage/caseList/index.vue
  6. 234
      src/views/archivesManage/caseManage/caseList/module/print.vue
  7. 10
      src/views/components/WarehouseWarning.vue
  8. 4
      src/views/components/echarts/lendAcross.vue
  9. 485
      src/views/environmentalScreen/index.vue
  10. 58
      src/views/storeManage/warehouse3D/archivesStorage/index.vue

9
public/static/config.js

@ -1,6 +1,11 @@
window.g = { window.g = {
AXIOS_TIMEOUT: 10000, AXIOS_TIMEOUT: 10000,
ApiUrl: 'http://192.168.99.100:7080', // 配置服务器地址
ApiUrl: 'http://192.168.99.72:7080', // 配置服务器地址
ApiWebRtcServerUrl: '127.0.0.1:8000', // 配置监控视频服务器地址 ApiWebRtcServerUrl: '127.0.0.1:8000', // 配置监控视频服务器地址
sDevID:'D003' // 桌面式RFID读写器
sDevID:'D003', // 桌面式RFID读写器,
ZMINConfig:{ // 标签打印机
ip:'127.0.0.1',
port:'1808',
filePath:'/home/it0/zmin/新标签01.lsf'
}
} }

15
src/api/home/alarm/index.js

@ -2,9 +2,20 @@ import request from '@/utils/request'
export function info(params) { export function info(params) {
return request({ return request({
url: 'api/alarm/info',
// url: 'api/alarm/info',
url: 'api/alarm/ypGetAlarm',
params, params,
method: 'get' method: 'get'
}) })
} }
export default { info }
// getDataForIP
export function FetchDataForIP(params) {
return request({
url: 'api/alarm/getDataForIP',
params,
method: 'get'
})
}
export default { info, FetchDataForIP }

27
src/main.js

@ -34,6 +34,33 @@ import './assets/icons' // icon
import './router/index' // permission control import './router/index' // permission control
import 'echarts-gl' import 'echarts-gl'
// 定义补零工具函数
const padZero = (num) => {
// 先转为数字,防止传入字符串,再补零
return Number(num).toString().padStart(2, '0')
}
// 注册全局时间格式化过滤器
Vue.filter('formatTs', (tsStr) => {
// 容错处理:如果TS为空或格式异常,返回原字符串
if (!tsStr || typeof tsStr !== 'string') return tsStr
// 拆分日期和时间部分(按空格分割)
const [datePart, timePart] = tsStr.split(' ')
if (!datePart || !timePart) return tsStr
// 处理日期部分:yyyy/MM/dd
const [year, month, day] = datePart.split('/')
const formattedDate = `${year}/${padZero(month)}/${padZero(day)}`
// 处理时间部分:HH:mm:ss
const [hour, minute, second] = timePart.split(':')
const formattedTime = `${padZero(hour)}:${padZero(minute)}:${padZero(second)}`
// 拼接最终结果
return `${formattedDate} ${formattedTime}`
})
// 全局注册过滤 - 时间 // 全局注册过滤 - 时间
import { parseTime } from '@/utils/index.js' import { parseTime } from '@/utils/index.js'
Vue.filter('parseTime', function(time, cFormat) { Vue.filter('parseTime', function(time, cFormat) {

523
src/views/archivesManage/caseManage/caseList/index-oldPrint.vue

@ -0,0 +1,523 @@
<template>
<div>
<!--工具栏-->
<div class="head-container">
<crudOperation :permission="permission">
<template v-slot:right>
<el-button icon="el-icon-delete" size="mini" :disabled="!crud.selections.length" @click="handleDel(crud.selections)">删除</el-button>
<el-select v-model="stateType" clearable size="small" class="filter-item" style="width: 100px; margin:0 0 0 10px;" @change="crud.toQuery">
<el-option v-for="item in stateOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
<el-input v-model="crud.query[inputSelect]" clearable size="small" placeholder="请输入关键词" style="width: 200px;margin-left:10px" class="input-prepend filter-item" @clear="crud.toQuery" @keyup.enter.native="crud.toQuery">
<el-select slot="prepend" v-model="inputSelect" style="width: 90px">
<el-option v-for="item in queryOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-input>
<rrOperation />
</template>
<template v-slot:rightButtonGroup>
<div class="archives-handler-btn">
<el-button :loading="codeLoading" class="warehousing-btn iconfont" type="primary" :disabled="crud.selections.length === 0" @click="onPrint(crud.selections)"><svg-icon icon-class="print" class="svg-arc-style" />批量打印条形码</el-button>
<el-button :loading="contentLoading" class="part-btn iconfont" type="primary" :disabled="crud.selections.length !== 1" @click="getPrintData"><svg-icon icon-class="print" class="svg-arc-style" />打印目录</el-button>
<el-button class="packing-btn iconfont icon-chaihe-fanbai" type="primary" :disabled="crud.selections.length === 0" @click="openCase(crud.selections)">拆盒</el-button>
<el-button class="binding-btn iconfont icon-bangding-fanbai" type="primary" :disabled="crud.selections.length !== 1" @click="bindingTag(crud.selections)">绑定标签</el-button>
</div>
</template>
</crudOperation>
</div>
<!-- <div class="app-container container-wrap"> -->
<span class="right-top-line" />
<span class="left-bottom-line" />
<!--表格渲染-->
<el-table
ref="table"
v-loading="crud.loading"
:cell-class-name="cell"
:data="crud.data"
style="width: 100%;"
height="calc(100vh - 375px)"
@row-dblclick="handleDbClick"
@selection-change="crud.selectionChangeHandler"
@row-click="clickRowHandler"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column type="index" label="序号" width="55" align="center" />
<el-table-column prop="storageType" label="入库" align="center" min-width="56">
<template slot-scope="scope">
<span class="clear" style="width:56px">{{ scope.row.storageType | storageTypeStatus }}</span>
</template>
</el-table-column>
<el-table-column prop="depositNum" label="已装" align="center" min-width="56" />
<el-table-column prop="caseName" label="盒名称" :show-overflow-tooltip="true" align="center" min-width="150" />
<el-table-column prop="tid" label="TID" align="center" min-width="180" />
<el-table-column prop="barcode" label="条形码" align="center" min-width="120" />
<el-table-column label="存放位置" align="center" min-width="300">
<template slot-scope="scope">
<span v-if="!scope.row.folderLocationDetails">-</span>
<span v-else>
<el-tag effect="dark">{{ scope.row.folderLocationDetails }}</el-tag>
</span>
</template>
</el-table-column>
<el-table-column prop="update_time" width="175" label="操作时间" align="center">
<template slot-scope="scope">
<div>{{ scope.row.update_time | parseTime }}</div>
</template>
</el-table-column>
</el-table>
<!--新增编辑表单渲染-->
<eForm />
<binding-tag-dlg ref="bindingTag" :binding-id="crud.selections[0] && crud.selections[0].id" :binding-type="2" binding-txt="档案盒" @refresh="crud.refresh" />
<open-case-dlg ref="openCase" @refresh="crud.refresh" />
<pagination />
<!-- </div> -->
<!-- 档案盒详情 -->
<detailDialog ref="detailDom" />
<!-- 删除弹框 -->
<el-dialog title="确认删除" :visible.sync="deleteVisible">
<span class="dialog-right-top" />
<span class="dialog-left-bottom" />
<div class="setting-dialog">
<p><span style="color:#fff;">确定删除当前档案盒吗</span></p>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click.native="handleDelConfirm(crud.selections)">确定</el-button>
</div>
</div>
</el-dialog>
<!-- 待入/已入 禁拆盒 -->
<el-dialog title="提示" :visible.sync="msgVisible">
<span class="dialog-right-top" />
<span class="dialog-left-bottom" />
<div class="setting-dialog">
<p><span style="color:#fff;font-size:16px">当前档案盒已入库请先出库</span></p>
</div>
</el-dialog>
<div v-show="isHidden" id="print" ref="printId" class="intoExamine">
<h3 style="text-align: center; margin:20px 0; font-size: 24px;">归档文件目录</h3>
<el-table :data="printData" border>
<el-table-column type="index" label="序号" width="55" align="center" />
<!-- <el-table-column label="件号" prop="pieceNo" width="55" align="center" /> -->
<el-table-column label="档号" prop="archiveNo" align="center" width="180px" />
<el-table-column label="文号" prop="docNo" align="center" width="160" />
<el-table-column label="责任者" prop="responsibleby" align="center" />
<el-table-column label="题名" prop="maintitle" align="center" width="200px" />
<el-table-column label="日期" prop="create_time" align="center" width="100">
<template slot-scope="scope">
<div>{{ parseTime(scope.row.create_time, '{y}-{m}-{d}') }}</div>
</template>
</el-table-column>
<el-table-column label="密级" prop="securityClass" align="center" />
<el-table-column label="页数" prop="pageQty" align="center" width="60" />
<el-table-column label="备注" prop="remarks" align="center" width="100px" />
</el-table>
</div>
<div ref="printDiv" style="display: none;">
<div v-for="item in selectedRows" :key="item.barcode" style="page-break-after:always; margin-top: 8px; margin-left: 20px;">
<div>
<img :src="item.barcode | creatBarCode(item.barcode, item.title)" style="border: 1px solid #000; width: 160px;">
</div>
</div>
</div>
<iframe ref="printIframe" frameborder="0" scrolling="no" style="margin: 0px;padding: 0px;width: 0px;height: 0px;" />
</div>
</template>
<script>
import caseCrudMethod from '@/api/archivesManage/caseManage'
import { del, printCaseBarcode } from '@/api/archivesManage/caseManage'
import BindingTagDlg from '@/views/components/BindingTagDlg'
import eForm from './module/form'
import openCaseDlg from './module/openCaseDlg'
import CRUD, { presenter, crud } from '@crud/crud'
import crudOperation from '@crud/CRUD.operation'
import rrOperation from '@crud/RR.operation'
import pagination from '@crud/Pagination'
import detailDialog from './module/detailDialog'
import JsBarcode from 'jsbarcode'
import html2canvas from 'html2canvas'
import printJS from 'print-js'
export default {
name: 'CaseList',
filters: {
storageTypeStatus(val) {
switch (val) {
case 0:
return '未入'
case 1:
return '待入'
case 2:
return '已入'
case 3:
return '待出'
}
},
creatBarCode(barCodeData, codePrintData, barCodeText) {
// console.log('')
console.log('codePrintData', codePrintData)
console.log('barCodeText', barCodeText)
const canvas = document.createElement('canvas')
// 'fantasy', //
JsBarcode(canvas, barCodeData, {
format: 'CODE128',
displayValue: true,
text: barCodeText,
fontOptions: 'bold', // 使
font: 'arial',
margin: 15,
height: 120,
width: 5,
fontSize: 36,
textMargin: 6,
textPosition: 'top'
})
return canvas.toDataURL('image/png')
}
},
components: { eForm, crudOperation, rrOperation, pagination, BindingTagDlg, openCaseDlg, detailDialog },
mixins: [presenter(), crud()],
cruds() {
return CRUD({
url: 'api/case/initCaseList',
crudMethod: caseCrudMethod,
title: '档案盒',
optShow: {
add: true,
edit: true,
del: false,
download: false,
group: false
}
// sort: ['case_name,asc']
})
},
data() {
return {
codeLoading: false,
selectedRows: [],
codePrintData: [],
isHidden: false,
contentLoading: false,
printData: [],
permission: {
add: ['admin', 'caseManage:add'],
edit: ['admin', 'caseManage:edit'],
del: ['admin', 'caseManage:del']
},
msgVisible: false,
deleteVisible: false,
verifyDialVisible: false,
stateType: '全部',
stateOptions: [
{
label: '全部',
value: '全部'
},
{
label: '未入',
value: '0'
},
{
label: '待入',
value: '1'
},
{
label: '已入',
value: '2'
},
{
label: '待出',
value: '3'
}
],
inputSelect: 'caseName',
queryOptions: [
{
label: '盒名称',
value: 'caseName'
},
{
label: 'TID',
value: 'tid'
},
{
label: '条形码',
value: 'barcode'
},
{
label: '地址码',
value: 'folderLocation'
}
]
}
},
mounted() {
},
methods: {
//
onPrint(data) {
this.codeLoading = true
const params = data.map(item => {
return item.id
})
printCaseBarcode(params).then(res => {
if (res && res.length !== 0) {
this.selectedRows = res
} else {
this.selectedRows = []
this.$message({
message: '无相关可打印条码数据!',
type: 'warning'
})
}
this.$nextTick(() => {
this.codePrintData.count = this.selectedRows.length
var printIframe = this.$refs.printIframe
var html = this.$refs.printDiv.innerHTML
printIframe.setAttribute('srcdoc', html)
printIframe.onload = function() {
console.log(printIframe.contentWindow)
// iframedombodypadding margin
printIframe.contentWindow.document.body.style.padding = '0px'
printIframe.contentWindow.document.body.style.margin = '0px'
//
printIframe.contentWindow.focus()
printIframe.contentWindow.print()
}
})
this.crud.refresh()
this.codeLoading = false
})
},
//
getPrintData() {
this.contentLoading = true
const params = {
caseId: this.crud.selections[0].id
}
this.crud.crudMethod.findInCase(params).then(res => {
if (res) {
this.printData = res.archives
}
this.isHidden = true
this.$nextTick(() => {
this.printFn()
this.isHidden = false
})
this.contentLoading = false
})
},
printFn() {
const printContent = this.$refs.printId
// dom
const width = printContent.clientWidth
const height = printContent.clientHeight
// canvas
const canvas = document.createElement('canvas')
const scale = 4 //
canvas.width = width * scale // canvas *
canvas.height = height * scale // canvas *
canvas.style.width = width * scale + 'px'
canvas.style.height = height * scale + 'px'
canvas.getContext('2d').scale(scale, scale) // context,scale
const scrollTop = document.documentElement.scrollTop || document.body.scrollTop //
const scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft //
html2canvas(printContent, {
canvas,
backgroundColor: null,
useCORS: true,
windowHeight: document.body.scrollHeight,
scrollX: -scrollLeft, //
scrollY: -scrollTop
}).then((canvas) => {
const url = canvas.toDataURL('image/png')
printJS({
printable: url,
type: 'image',
documentTitle: '', //
style: '@page{size:auto;margin: 0cm 1cm 0cm 1cm;}' //
})
}).catch(err => {
console.error(err)
})
},
//
[CRUD.HOOK.beforeRefresh]() {
this.crud.query.storageType = null
if (this.stateType === '全部') {
this.crud.query.storageType = null
} else {
this.crud.query.storageType = this.stateType
}
// this.crud.query.caseName = null
// this.crud.query.tid = null
// this.crud.query.barcode = null
// this.crud.query[this.caseLogSelect] = this.caseQuery[this.caseLogSelect]
},
clickRowHandler(row) {
this.$refs.table.toggleRowSelection(row)
},
bindingTag(data) {
if (data[0].tid) {
this.$refs.bindingTag.isBinding = true
this.$refs.bindingTag.tidCode = data[0].tid
}
this.$refs.bindingTag.bindingVisible = true
},
openCase(data) {
const isBool = data.every(item => item.storageType === 0)
if (isBool) {
const bool = data.some(item => item.depositNum === 0)
if (bool) {
this.$message({
message: '存在空档案盒不可拆盒!',
type: 'warning'
})
} else {
this.$refs.openCase.openCaseVisible = true
this.$refs.openCase.caseData = data
}
} else {
this.msgVisible = true
}
},
//
handleDbClick(row) {
this.$refs.detailDom.rowData = row
const params = {
caseId: row.id
}
this.crud.crudMethod.findInCase(params).then(res => {
if (res) {
this.$refs.detailDom.tableData = res.archives
}
})
this.$refs.detailDom.detailVisible = true
},
//
cell({ row, columnIndex }) {
if (row.storageType === 0) { //
return 'fail-clear'
} else if (row.storageType === 1) { //
return 'no-clear'
} else if (row.storageType === 2) { //
return 'have-clear'
} else if (row.storageType === 3) { //
return 'other-clear'
}
},
//
handleDel(data) {
const boolDeposit = data.every(item => item.depositNum === 0)
const boolStorage = data.every(item => item.storageType === 0)
if (boolStorage) {
if (boolDeposit) {
this.deleteVisible = true
} else {
this.$message.error('请清空档案盒后再删除!')
}
} else {
this.$message.error('请操作出库并清空档案盒后才可删除盒!')
}
},
//
handleDelConfirm(data) {
const params = data.map(item => {
return item.id
})
del(params).then(res => {
if (res.doDel.length === 0) {
this.$message.error('删除失败')
} else {
if (res.doDel.length === data.length) {
this.$message.success('全部删除成功')
} else {
this.$message.success('部分删除成功')
}
}
this.deleteVisible = false
this.crud.refresh()
})
}
}
}
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
@import '~@/assets/styles/lend-manage.scss';
@import "~@/assets/styles/archives-manage.scss";
::v-deep div.el-dialog__footer {
text-align: center;
}
.app-container{
margin: 0 20px 20px;
}
.container-wrap{
min-height: calc(100vh - 242px);
}
.packing-btn{
width: 76px;
height: 30px;
padding-left: 13px !important;
}
.binding-btn{
width: 106px;
height: 30px;
padding-left: 13px !important;
}
.crud-opts{
display: flex;
}
.intoExamine{
position: fixed;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
// width: 980px;
background-color: #fff;
z-index: 99;
::v-deep .el-table--group, .el-table--border{
border: 1px solid #000;
border-bottom: none;
border-top: none;
}
::v-deep .el-table__header{
border-bottom: 1px solid #000;;
}
::v-deep .el-table .el-table__header-wrapper th.el-table__cell, .el-table .el-table__header th.el-table__cell{
color: #000;
background-color: #fff;
border-bottom: none;
&>.cell{
color: #000;
}
}
::v-deep .el-table .el-table__body-wrapper td.el-table__cell, .el-table .el-table__fixed-right td.el-table__cell{
color: #000;
border-bottom: 1px solid #000;
padding: 0;
}
::v-deep .el-table__body tr.el-table__row:hover>td.el-table__cell, .el-table__body tr.el-table__row:focus>td.el-table__cell, .el-table__body tr.current-row:hover>td.el-table__cell, .el-table__body tr.current-row:focus>td.el-table__cell{
background-color: transparent;
}
::v-deep .el-table--border .el-table__cell{
border-right: 1px solid #000;
}
}
@media print {
/*最外层打印节点*/
html,body{
height: inherit;
}
.intoExamine{
margin: 0 auto;
}
}
</style>

68
src/views/archivesManage/caseManage/caseList/index.vue

@ -17,6 +17,7 @@
</template> </template>
<template v-slot:rightButtonGroup> <template v-slot:rightButtonGroup>
<div class="archives-handler-btn"> <div class="archives-handler-btn">
<!-- 批量打印条形码 -->
<el-button :loading="codeLoading" class="warehousing-btn iconfont" type="primary" :disabled="crud.selections.length === 0" @click="onPrint(crud.selections)"><svg-icon icon-class="print" class="svg-arc-style" />批量打印条形码</el-button> <el-button :loading="codeLoading" class="warehousing-btn iconfont" type="primary" :disabled="crud.selections.length === 0" @click="onPrint(crud.selections)"><svg-icon icon-class="print" class="svg-arc-style" />批量打印条形码</el-button>
<el-button :loading="contentLoading" class="part-btn iconfont" type="primary" :disabled="crud.selections.length !== 1" @click="getPrintData"><svg-icon icon-class="print" class="svg-arc-style" />打印目录</el-button> <el-button :loading="contentLoading" class="part-btn iconfont" type="primary" :disabled="crud.selections.length !== 1" @click="getPrintData"><svg-icon icon-class="print" class="svg-arc-style" />打印目录</el-button>
<el-button class="packing-btn iconfont icon-chaihe-fanbai" type="primary" :disabled="crud.selections.length === 0" @click="openCase(crud.selections)">拆盒</el-button> <el-button class="packing-btn iconfont icon-chaihe-fanbai" type="primary" :disabled="crud.selections.length === 0" @click="openCase(crud.selections)">拆盒</el-button>
@ -93,6 +94,15 @@
<p><span style="color:#fff;font-size:16px">当前档案盒已入库请先出库</span></p> <p><span style="color:#fff;font-size:16px">当前档案盒已入库请先出库</span></p>
</div> </div>
</el-dialog> </el-dialog>
<el-dialog title="标签打印" :visible.sync="printDialogVisible" width="800px">
<span class="dialog-right-top" />
<span class="dialog-left-bottom" />
<div class="setting-dialog">
<print ref="printComponent" :print-list="printLabelList" />
</div>
</el-dialog>
<div v-show="isHidden" id="print" ref="printId" class="intoExamine"> <div v-show="isHidden" id="print" ref="printId" class="intoExamine">
<h3 style="text-align: center; margin:20px 0; font-size: 24px;">归档文件目录</h3> <h3 style="text-align: center; margin:20px 0; font-size: 24px;">归档文件目录</h3>
<el-table :data="printData" border> <el-table :data="printData" border>
@ -139,6 +149,8 @@ import detailDialog from './module/detailDialog'
import JsBarcode from 'jsbarcode' import JsBarcode from 'jsbarcode'
import html2canvas from 'html2canvas' import html2canvas from 'html2canvas'
import printJS from 'print-js' import printJS from 'print-js'
import Print from '../caseList/module/print'
export default { export default {
name: 'CaseList', name: 'CaseList',
filters: { filters: {
@ -156,8 +168,8 @@ export default {
}, },
creatBarCode(barCodeData, codePrintData, barCodeText) { creatBarCode(barCodeData, codePrintData, barCodeText) {
// console.log('') // console.log('')
console.log('codePrintData', codePrintData)
console.log('barCodeText', barCodeText)
// console.log('codePrintData', codePrintData)
// console.log('barCodeText', barCodeText)
const canvas = document.createElement('canvas') const canvas = document.createElement('canvas')
// 'fantasy', // // 'fantasy', //
JsBarcode(canvas, barCodeData, { JsBarcode(canvas, barCodeData, {
@ -176,7 +188,7 @@ export default {
return canvas.toDataURL('image/png') return canvas.toDataURL('image/png')
} }
}, },
components: { eForm, crudOperation, rrOperation, pagination, BindingTagDlg, openCaseDlg, detailDialog },
components: { eForm, crudOperation, rrOperation, pagination, BindingTagDlg, openCaseDlg, detailDialog, Print },
mixins: [presenter(), crud()], mixins: [presenter(), crud()],
cruds() { cruds() {
return CRUD({ return CRUD({
@ -250,7 +262,9 @@ export default {
label: '地址码', label: '地址码',
value: 'folderLocation' value: 'folderLocation'
} }
]
],
printDialogVisible: false, //
printLabelList: [] //
} }
}, },
@ -260,12 +274,36 @@ export default {
// //
onPrint(data) { onPrint(data) {
this.codeLoading = true this.codeLoading = true
const params = data.map(item => {
return item.id
})
const params = data.map(item => item.id)
printCaseBarcode(params).then(res => { printCaseBarcode(params).then(res => {
if (res && res.length !== 0) { if (res && res.length !== 0) {
this.selectedRows = res this.selectedRows = res
// print
this.printLabelList = res.map(item => {
return {
lsfFileVarList: [
{
lsfFileVar: {
varname: 'barcode', //
varvalue: '编号:' + item.barcode
}
},
{
lsfFileVar: {
varname: 'title',
varvalue: '姓名:' + item.title
}
}
]
}
})
//
this.printDialogVisible = true
//
this.$nextTick(() => {
this.$refs.printComponent.connectprinter()
})
} else { } else {
this.selectedRows = [] this.selectedRows = []
this.$message({ this.$message({
@ -273,22 +311,6 @@ export default {
type: 'warning' type: 'warning'
}) })
} }
this.$nextTick(() => {
this.codePrintData.count = this.selectedRows.length
var printIframe = this.$refs.printIframe
var html = this.$refs.printDiv.innerHTML
printIframe.setAttribute('srcdoc', html)
printIframe.onload = function() {
console.log(printIframe.contentWindow)
// iframedombodypadding margin
printIframe.contentWindow.document.body.style.padding = '0px'
printIframe.contentWindow.document.body.style.margin = '0px'
//
printIframe.contentWindow.focus()
printIframe.contentWindow.print()
}
})
this.crud.refresh()
this.codeLoading = false this.codeLoading = false
}) })
}, },

234
src/views/archivesManage/caseManage/caseList/module/print.vue

@ -0,0 +1,234 @@
<template>
<div id="app">
<el-row :gutter="10">
<div>
<el-button type="primary" @click="connectprinter">连接打印服务</el-button>
<el-input v-model="printerstatus" style="width: 400px;" readonly placeholder="打印机状态" />
<el-button type="primary" @click="previewlabel">标签预览</el-button>
<el-button type="primary" @click="printstart">打印标签</el-button>
</div>
</el-row>
<div style="margin: 16px 0; color: #fff;">标签预览只预览第一张</div>
<img style="width: 300px; height: auto" :src="pvimg" alt="标签预览">
</div>
</template>
<script>
export default {
props: {
printList: {
type: Array,
default: function() {
return []
}
}
},
data() {
return {
wsocket: null,
// ip
serverIP: '127.0.0.1',
//
serverPort: '1808',
jsonstring: {
Printer: {
printerinterface: 'USB',
printerdpi: '300',
printSpeed: '4',
printDarkness: '15'
},
Operate: 'print',
//
lsfFilePath: '/home/it0/zmin/新标签01.lsf',
//
labels: []
},
printerstatus: '',
pvimg:
'data:image/png;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCADsAk8DASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP//Z',
numberPrintneed: 1,
numberPrinted: 0
}
},
watch: {
printList: {
immediate: true,
handler(newVal) {
if (newVal && newVal.length > 0) {
this.jsonstring.labels = newVal
this.numberPrintneed = newVal.length //
}
}
}
},
created() {
const ZMINConfig = process.env.NODE_ENV === 'production' ? window.g.ZMINConfig : { ip: '127.0.0.1', port: '1808', filePath: '/home/it0/zmin/新标签01.lsf' }
console.log('ZMINConfig', ZMINConfig)
this.serverIP = ZMINConfig.ip
this.serverPort = ZMINConfig.port
this.jsonstring.lsfFilePath = ZMINConfig.filePath
this.jsonstring.labels = this.printList
console.log('this.jsonstring.labels', this.jsonstring.labels)
},
methods: {
//
connection() {
// WebSocket
const wsserver = `ws://${this.serverIP}:${this.serverPort}/`
// WebSocket
// if ('WebSocket' in window) {
// // WebSocket
// this.wsocket = new WebSocket(wsserver)
// } else if ('MozWebSocket' in window) {
// // Firefox
// this.wsocket = new MozWebSocket(wsserver)
// } else {
// // WebSocket
// this.$message.error('')
// return
// }
//
if ('WebSocket' in window) {
this.wsocket = new WebSocket(wsserver)
} else {
this.$message.error('当前浏览器不支持 WebSocket!')
return
}
// WebSocket
this.wsocket.onopen = () => {
//
this.printerstatus = '连接打印服务成功!'
}
// WebSocket
this.wsocket.onclose = () => {
//
this.printerstatus = '与打印服务断开连接!'
}
// WebSocket
this.wsocket.onerror = () => {
//
this.$message.error('数据传输错误,请检查打印服务是否已经运行!')
}
// WebSocket
this.wsocket.onmessage = (receiveMsg) => {
//
const receivecontent = receiveMsg.data
console.log('receiveMsg', receiveMsg)
// "PrinterStatus_USB:"
if (receivecontent.indexOf('PrinterStatus_USB:') === 0) {
//
const printerstatus = parseInt(
receivecontent.replace('PrinterStatus_USB:', '')
)
// 0
if (printerstatus !== 0) {
let statusmsg = ''
//
if (printerstatus === 88) { statusmsg = '打印机已经暂停,请按[暂停]按键,再重新打印!' } else if (printerstatus === 82) {
statusmsg =
'打印机碳带错误,请重新安装碳带后按[取消]按键,再重新打印!'
} else if (printerstatus === 83) {
statusmsg =
'打印机标签错误,请重新安装标签后按[取消]按键,再重新打印!'
} else if (printerstatus === 89) { statusmsg = '标签纸用完了,请安装新标签!' } else if (printerstatus === 90) { statusmsg = 'RFID标签读写错误,请按[取消]按键,再重新打印!' } else if (printerstatus === 91 || printerstatus === 92) { statusmsg = 'RFID标签校准错误,请按[取消]按键,再重新打印!' } else if (printerstatus === -1007) { statusmsg = '打印机端口异常,请检查打印机是否正常连接且已开机。' } else {
//
this.printerstatus = `打印机状态异常,错误代码:${printerstatus}`
this.$message.error(`打印机状态异常,错误代码:${printerstatus}`)
return
}
//
this.printerstatus = `打印机状态异常:${statusmsg}`
//
this.$message.error(`打印机状态异常:${statusmsg}`)
return
} else {
// 0
if (this.numberPrinted < this.numberPrintneed) {
//
this.printlabel()
} else {
//
this.$message.success(`已打印完 ${this.numberPrinted} 张标签。`)
this.numberPrinted = 0
}
}
} else if (receivecontent.indexOf('打印完成') === 0) {
// ""
this.numberPrinted++
//
this.printerstatus = `${this.numberPrinted} 张标签打印完成。`
//
if (this.numberPrinted < this.numberPrintneed) { this.wsocket.send('ZM_GetPrinterStatus_USB|500') }
} else if (receivecontent.indexOf('ZM_PrintLabel_Preview:') === 0) {
// "ZM_PrintLabel_Preview:"
const imagebase64string = receivecontent.replace(
'ZM_PrintLabel_Preview:',
''
)
console.log('imagebase64string', imagebase64string)
//
if (imagebase64string.length > 0) this.pvimg = imagebase64string
console.log('imagebase64string2', imagebase64string)
} else {
//
this.printerstatus = receivecontent
}
}
},
//
connectprinter() {
if (this.wsocket != null) {
this.wsocket.close()
this.wsocket = null
}
this.connection()
setTimeout(() => {
//
this.wsocket.send('ZM_GetPrinterNameAndSN')
}, 500)
},
//
printstart() {
if (this.wsocket == null) {
this.$message.error('请先连接打印服务')
return
}
this.numberPrinted = 0
this.wsocket.send('ZM_GetPrinterStatus_USB|500')
},
//
printlabel() {
this.jsonstring.Operate = 'print'
const newjsonstring = JSON.stringify(this.jsonstring)
console.log('标签打印newjsonstring', newjsonstring)
this.wsocket.send(newjsonstring)
},
//
previewlabel() {
this.jsonstring.Operate = 'preview'
const newjsonstring = JSON.stringify(this.jsonstring)
console.log('标签预览this.jsonstring', this.jsonstring)
console.log('标签预览newjsonstring', newjsonstring)
this.wsocket.send(newjsonstring)
}
}
}
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
@import '~@/assets/styles/lend-manage.scss';
@import "~@/assets/styles/archives-manage.scss";
</style>

10
src/views/components/WarehouseWarning.vue

@ -9,9 +9,13 @@
</h3> </h3>
<!--表格渲染--> <!--表格渲染-->
<el-table ref="table" style="min-width: 100%;" :width="width" :height="height" :data="tableData" class="warehose-el-table" :row-class-name="rowBgColor" @row-click="toPage"> <el-table ref="table" style="min-width: 100%;" :width="width" :height="height" :data="tableData" class="warehose-el-table" :row-class-name="rowBgColor" @row-click="toPage">
<el-table-column prop="alarm_time" label="时间" align="center" min-width="60" />
<el-table-column prop="area_name" label="库房" align="center" :show-overflow-tooltip="true" min-width="30" />
<el-table-column prop="event_name" label="警情" align="center" :show-overflow-tooltip="true" min-width="85" />
<el-table-column prop="TS" label="时间" min-width="65">
<template slot-scope="scope">
<span v-if="scope.row.TS">{{ scope.row.TS | formatTs }}</span>
</template>
</el-table-column>
<el-table-column prop="name" label="设备" :show-overflow-tooltip="true" min-width="60" />
<el-table-column prop="value" label="警情" align="center" :show-overflow-tooltip="true" min-width="65" />
</el-table> </el-table>
</div> </div>
</template> </template>

4
src/views/components/echarts/lendAcross.vue

@ -111,13 +111,13 @@ export default {
axisTick: { axisTick: {
show: false show: false
}, },
data: ['异常档案', '逾期档案', '待借档案', '已借档案', '在库档案']
data: ['逾期档案', '已借档案', '在库档案']
}, },
series: [ series: [
{ {
name: '数量', name: '数量',
type: 'bar', type: 'bar',
barWidth: 15, //
barWidth: 30, //
barGap: 25, barGap: 25,
showBackground: true, showBackground: true,
backgroundStyle: { backgroundStyle: {

485
src/views/environmentalScreen/index.vue

@ -8,7 +8,7 @@
<span class="right-top-line" /> <span class="right-top-line" />
<span class="left-bottom-line" /> <span class="left-bottom-line" />
<h3><i class="iconfont icon-kongqizhiliangshuju" />档案库空气质量数据</h3> <h3><i class="iconfont icon-kongqizhiliangshuju" />档案库空气质量数据</h3>
<ul class="screen-env-list">
<!-- <ul class="screen-env-list">
<li v-show="(bannerIndex === 0 || bannerIndex === 1 || bannerIndex === 2 || bannerIndex === 3) && topDisplayData.DAK_DIV_TOP_003.show" :class="{ 'li-warn': topDisplayData.DAK_DIV_TOP_003.curstatus > 0 }"> <li v-show="(bannerIndex === 0 || bannerIndex === 1 || bannerIndex === 2 || bannerIndex === 3) && topDisplayData.DAK_DIV_TOP_003.show" :class="{ 'li-warn': topDisplayData.DAK_DIV_TOP_003.curstatus > 0 }">
<svg-icon icon-class="co2" class-name="msg-list-svg" /> <svg-icon icon-class="co2" class-name="msg-list-svg" />
<div class="msg-txt"> <div class="msg-txt">
@ -37,67 +37,9 @@
<p class="msg-list-unit">PM10 {{ topDisplayData.DAK_DIV_TOP_006.unit }}</p> <p class="msg-list-unit">PM10 {{ topDisplayData.DAK_DIV_TOP_006.unit }}</p>
</div> </div>
</li> </li>
<!-- 7F 现行文件室 / 信息技术室 -->
<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.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.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.XXW_DIV_TOP_004.curValue }}</span>
<p class="msg-list-unit">TVOC {{ topDisplayData.XXW_DIV_TOP_004.unit }}</p>
</div>
</li>
<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.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.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.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.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.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.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.DXW_DIV_TOP_004.curValue }}</span>
<p class="msg-list-unit">TVOC {{ topDisplayData.DXW_DIV_TOP_004.unit }}</p>
</div>
</li>
<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.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.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.DXW_DIV_TOP_006.curValue }}</span>
<p class="msg-list-unit">PM10 {{ topDisplayData.DXW_DIV_TOP_006.unit }}</p>
</div>
</li>
</ul>
</ul> -->
</div> </div>
<div class="env-item container-wrap">
<!-- <div class="env-item container-wrap">
<span class="right-top-line" /> <span class="right-top-line" />
<span class="left-bottom-line" /> <span class="left-bottom-line" />
<h3><i class="iconfont icon-loushuijiance" />漏水检测</h3> <h3><i class="iconfont icon-loushuijiance" />漏水检测</h3>
@ -125,20 +67,15 @@
</li> </li>
</ul> </ul>
</div> </div>
</div>
</div> -->
<!-- 门禁记录 --> <!-- 门禁记录 -->
<security-door :height="'calc(100% - 38px)'" /> <security-door :height="'calc(100% - 38px)'" />
</div> </div>
<div class="env-main-middle"> <div class="env-main-middle">
<div class="env-3d"> <div class="env-3d">
<div class="banner-top-name">{{ bannerRoomName }}</div> <div class="banner-top-name">{{ bannerRoomName }}</div>
<el-carousel ref="carousel" indicator-position="outside" height="450px" arrow="never" :interval="8000" style="padding-top: 100px;" @change="handleChange">
<el-carousel-item v-for="item in 7" :key="item">
<img :src="require(`../../assets/images/largeScreen/screen${ item }.png`)" alt="">
</el-carousel-item>
</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">
<iframe id="myIframe" ref="myIframe" name="iframeMap" class="iframe_box" src="/web3D/index.html" frameborder="0" scrolling="no" />
<!-- <ul class="screen-env-list">
<li v-show="(bannerIndex === 0 || bannerIndex === 1 ) && 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" /> <svg-icon icon-class="temperature" class-name="msg-list-svg" />
<div class="msg-txt"> <div class="msg-txt">
@ -153,7 +90,6 @@
<p class="msg-list-unit">湿度 {{ topDisplayData.DAK_DIV_TOP_002.unit }}</p> <p class="msg-list-unit">湿度 {{ topDisplayData.DAK_DIV_TOP_002.unit }}</p>
</div> </div>
</li> </li>
<!-- 整理室 -->
<li v-show="bannerIndex === 2 && topOAODisplayData.ZLS_MO_OAO_001.show" :class="{ 'li-warn': topOAODisplayData.ZLS_MO_OAO_001.alarmState }"> <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" /> <svg-icon icon-class="temperature" class-name="msg-list-svg" />
<div class="msg-txt"> <div class="msg-txt">
@ -168,7 +104,6 @@
<p class="msg-list-unit">湿度</p> <p class="msg-list-unit">湿度</p>
</div> </div>
</li> </li>
<!-- 阅览室 -->
<li v-show="bannerIndex === 3 && topOAODisplayData.YLS_MO_OAO_001.show" :class="{ 'li-warn': topOAODisplayData.YLS_MO_OAO_001.alarmState }"> <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" /> <svg-icon icon-class="temperature" class-name="msg-list-svg" />
<div class="msg-txt"> <div class="msg-txt">
@ -183,134 +118,7 @@
<p class="msg-list-unit">湿度</p> <p class="msg-list-unit">湿度</p>
</div> </div>
</li> </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" />
<div class="msg-txt">
<span class="msg-list-num">{{ topDisplayData.XXW_DIV_TOP_001.curValue }}</span>
<p class="msg-list-unit">温度 {{ topDisplayData.XXW_DIV_TOP_001.unit }}</p>
</div>
</li>
<li v-show="(bannerIndex === 4 || bannerIndex === 5) && topDisplayData.XXW_DIV_TOP_002.show" :class="{ 'li-warn': topDisplayData.XXW_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.XXW_DIV_TOP_002.curValue }}</span>
<p class="msg-list-unit">湿度 {{ topDisplayData.XXW_DIV_TOP_002.unit }}</p>
</div>
</li>
<!-- 7F 待销文件室 -->
<li v-show="bannerIndex === 6 && topDisplayData.DXW_DIV_TOP_001.show" :class="{ 'li-warn': topDisplayData.DXW_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.DXW_DIV_TOP_001.curValue }}</span>
<p class="msg-list-unit">温度 {{ topDisplayData.DXW_DIV_TOP_001.unit }}</p>
</div>
</li>
<li v-show="bannerIndex === 6 && topDisplayData.DXW_DIV_TOP_002.show" :class="{ 'li-warn': topDisplayData.DXW_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.DXW_DIV_TOP_002.curValue }}</span>
<p class="msg-list-unit">湿度 {{ topDisplayData.DXW_DIV_TOP_002.unit }}</p>
</div>
</li>
</ul>
</div>
<div class="middle-bottom">
<div class="container-wrap middle-bottom-l">
<span class="right-top-line" />
<span class="left-bottom-line" />
<ul>
<li>
<div class="row-item">
<div class="svg-box">
<svg-icon icon-class="danganzongliang" class-name="card-panel-icon" />
</div>
<span>馆藏总量</span>
</div>
<!-- <span class="row-num">12345</span> -->
<div class="card-panel-text">
<count-to :start-val="0" :end-val="totalNum" :duration="3200" class="row-num" />
</div>
</li>
<li>
<div class="row-item">
<div class="svg-box">
<svg-icon icon-class="zaijieshuliang" class-name="card-panel-icon" />
</div>
<span>文件数量</span>
</div>
<div class="card-panel-text">
<count-to :start-val="0" :end-val="filesNum" :duration="3200" class="row-num" />
</div>
</li>
<li>
<div class="row-item">
<div class="svg-box">
<svg-icon icon-class="zaikushuliang" class-name="card-panel-icon" />
</div>
<span>案卷数量</span>
</div>
<div class="card-panel-text">
<count-to :start-val="0" :end-val="archivesNum" :duration="3200" class="row-num" />
</div>
</li>
</ul>
<ul>
<li>
<div class="row-item">
<div class="svg-box">
<svg-icon icon-class="quanbushebei" class-name="card-panel-icon" />
</div>
<span>全部设备</span>
</div>
<div class="card-panel-text">
<count-to :start-val="0" :end-val="allDevNum" :duration="3200" class="row-num" />
</div>
</li>
<li>
<div class="row-item">
<div class="svg-box">
<svg-icon icon-class="zaixianshebei" class-name="card-panel-icon" />
</div>
<span>在线设备</span>
</div>
<div class="card-panel-text">
<count-to :start-val="0" :end-val="lineDevNum" :duration="3200" class="row-num" />
</div>
</li>
<li>
<div class="row-item">
<div class="svg-box">
<svg-icon icon-class="lixianshebei" class-name="card-panel-icon" />
</div>
<span>离线设备</span>
</div>
<div class="card-panel-text">
<count-to :start-val="0" :end-val="offDevNum" :duration="3200" class="row-num" />
</div>
</li>
</ul>
</div>
<div class="container-wrap middle-bottom-r">
<span class="right-top-line" />
<span class="left-bottom-line" />
<ul>
<li>
<span>日借阅量</span>
<NumFlip ref="daylend" :tnum="daylend" :chartnum="daylendnum" />
</li>
<li><span>日归还量</span>
<NumFlip ref="dayreturn" :tnum="dayreturn" :chartnum="dayreturnnum" />
</li>
<li><span>月借阅量</span>
<NumFlip ref="monlend" :tnum="monlend" :chartnum="monlendnum" />
</li>
<li><span>月归还量</span>
<NumFlip ref="monreturn" :tnum="monreturn" :chartnum="monreturnnum" />
</li>
</ul>
</div>
</ul> -->
</div> </div>
</div> </div>
<div class="env-main-right"> <div class="env-main-right">
@ -324,20 +132,6 @@
<lend-across :lend-data="lendData" :refreshtime="refreshtime" /> <lend-across :lend-data="lendData" :refreshtime="refreshtime" />
</div> </div>
</div> </div>
<div class="env-item container-wrap">
<span class="right-top-line" />
<span class="left-bottom-line" />
<h3>
<svg-icon icon-class="danganleibie" style="margin-right:10px" />档案类型
</h3>
<div v-if="typeData.length !== 0" class="chart-wrapper" style="height: calc(100% - 40px);">
<type-pie :type-data="typeData" :refreshtime="refreshtime" />
</div>
<div v-else class="empty-main">
<svg-icon icon-class="empty" class-name="empty-img" />
<p>暂无数据</p>
</div>
</div>
<!-- 报警记录 --> <!-- 报警记录 -->
<warehouse-warning :height="'calc(100% - 38px)'" /> <warehouse-warning :height="'calc(100% - 38px)'" />
</div> </div>
@ -347,7 +141,7 @@
<script> <script>
import { getCurrentTime } from '@/utils/index' import { getCurrentTime } from '@/utils/index'
import typePie from '@/views/components/echarts/typePie.vue'
// import typePie from '@/views/components/echarts/typePie.vue'
import lendAcross from '@/views/components/echarts/lendAcross.vue' import lendAcross from '@/views/components/echarts/lendAcross.vue'
// import Video from '@/views/storeManage/warehouse3D/module/video' // import Video from '@/views/storeManage/warehouse3D/module/video'
import WarehouseWarning from '@/views/components/WarehouseWarning' import WarehouseWarning from '@/views/components/WarehouseWarning'
@ -355,28 +149,24 @@ import SecurityDoor from '@/views/components/SecurityDoor'
import displayConfigApi from '@/api/storeManage/displayConfig' import displayConfigApi from '@/api/storeManage/displayConfig'
import thirdApi from '@/api/thirdApi' import thirdApi from '@/api/thirdApi'
import { statisticsCrud } from '@/views/system/archiveStatistics/mixins/statistics' import { statisticsCrud } from '@/views/system/archiveStatistics/mixins/statistics'
import NumFlip from './module/numFlip.vue'
import CountTo from 'vue-count-to'
import { getDayYearBorrowNum } from '@/api/archivesManage/lendManage'
import { getDeviceList } from '@/api/storeManage/deviceManage/device'
import { getOnlineDevice } from '@/api/home/device'
import { FetchGetArchivesNum, FetchInitArchivesTypeNum } from '@/api/archivesManage/statistics'
// import NumFlip from './module/numFlip.vue'
// import CountTo from 'vue-count-to'
// import { getDayYearBorrowNum } from '@/api/archivesManage/lendManage'
// import { getDeviceList } from '@/api/storeManage/deviceManage/device'
// import { getOnlineDevice } from '@/api/home/device'
// import { FetchGetArchivesNum, FetchInitArchivesTypeNum } from '@/api/archivesManage/statistics'
export default { export default {
name: 'EnvironmentalScreen', name: 'EnvironmentalScreen',
components: { components: {
WarehouseWarning, WarehouseWarning,
SecurityDoor, SecurityDoor,
// Video, // Video,
lendAcross,
typePie,
NumFlip,
CountTo
lendAcross
}, },
mixins: [statisticsCrud], mixins: [statisticsCrud],
data() { data() {
return { return {
bannerRoomName: '5F 全景图',
bannerIndex: 0,
bannerRoomName: '3F 全景图',
nowDate: '', nowDate: '',
timer: null, timer: null,
className: ['readRoomContainer', 'collateRoomContainer'], className: ['readRoomContainer', 'collateRoomContainer'],
@ -436,80 +226,6 @@ export default {
curValue: '', curValue: '',
unit: '', unit: '',
curstatus: 0 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
} }
}, },
waterLeakage: { waterLeakage: {
@ -519,20 +235,20 @@ export default {
waterLeakageStatus4: false, waterLeakageStatus4: false,
waterLeakageText4: '' waterLeakageText4: ''
}, },
daylend: 'daylend',
daylendnum: 0,
dayreturn: 'dayreturn',
dayreturnnum: 0,
monlend: 'monlend',
monlendnum: 0,
monreturn: 'monreturn',
monreturnnum: 0,
totalNum: 0,
filesNum: 0,
archivesNum: 0,
allDevNum: 0,
lineDevNum: 0,
offDevNum: 0,
// daylend: 'daylend',
// daylendnum: 0,
// dayreturn: 'dayreturn',
// dayreturnnum: 0,
// monlend: 'monlend',
// monlendnum: 0,
// monreturn: 'monreturn',
// monreturnnum: 0,
// totalNum: 0,
// filesNum: 0,
// archivesNum: 0,
// allDevNum: 0,
// lineDevNum: 0,
// offDevNum: 0,
echartsTimer: null, echartsTimer: null,
refreshtime: 60000 refreshtime: 60000
} }
@ -555,7 +271,7 @@ export default {
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')) }) 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')) })
console.log('displayConfigData', this.displayConfigData) console.log('displayConfigData', this.displayConfigData)
await this.getRealTimeData() await this.getRealTimeData()
this.getDayYearBorrowNum()
// this.getDayYearBorrowNum()
this.handleLeftTableNum() this.handleLeftTableNum()
}, },
mounted() { mounted() {
@ -568,7 +284,7 @@ export default {
window.addEventListener('message', this.handleMessageDevice) window.addEventListener('message', this.handleMessageDevice)
// //
this.dataTimer = setInterval(async() => { this.dataTimer = setInterval(async() => {
_this.getDayYearBorrowNum()
// _this.getDayYearBorrowNum()
_this.handleLeftTableNum() _this.handleLeftTableNum()
// await _this.getRealTimeData() // await _this.getRealTimeData()
// _this.handleAQI() // _this.handleAQI()
@ -580,8 +296,6 @@ export default {
_this.getBorrowerNumSta() _this.getBorrowerNumSta()
_this.getArchivesTypeStatistics() _this.getArchivesTypeStatistics()
}, this.refreshtime) }, this.refreshtime)
this.$refs.carousel.$on('change', this.handleChange)
}, },
beforeDestroy() { beforeDestroy() {
if (this.timer) { if (this.timer) {
@ -592,66 +306,21 @@ export default {
} }
}, },
methods: { methods: {
async handleChange(index) {
this.bannerIndex = index
if (index === 0) {
this.bannerRoomName = '5F 全景图'
this.roomId = 'D6490DA3D4261E8C26D0E3'
await this.changeRoomGetDeivce()
} else if (index === 1) {
this.bannerRoomName = '5F 档案库'
this.roomId = 'D6490DA3D4261E8C26D0E3'
} else if (index === 2) {
this.bannerRoomName = '5F 整理室'
this.roomId = 'D5C48B49DF66183CF24974'
await this.changeRoomGetDeivce()
} else if (index === 3) {
this.bannerRoomName = '5F 阅览室'
this.roomId = '9E0A527462BB8A060EB165'
await this.changeRoomGetDeivce()
} else if (index === 4) {
this.bannerRoomName = '7F 全景图'
this.roomId = '1B2DADD8499058954C0CAC'
await this.changeRoomGetDeivce()
} else if (index === 5) {
this.bannerRoomName = '7F 现行文件室 / 信息技术室'
this.roomId = '1B2DADD8499058954C0CAC'
await this.changeRoomGetDeivce()
} else if (index === 6) {
this.bannerRoomName = '7F 待销文件室'
this.roomId = 'D4C395BFB0A2E7C96C65A0'
await this.changeRoomGetDeivce()
}
},
async changeRoomGetDeivce() { async changeRoomGetDeivce() {
this.allDeviceIds = [] this.allDeviceIds = []
this.allDisplayConfigData = await displayConfigApi.list({ storeroomId: this.roomId }) this.allDisplayConfigData = await displayConfigApi.list({ storeroomId: this.roomId })
console.log('allDisplayConfigData2', this.allDisplayConfigData) console.log('allDisplayConfigData2', this.allDisplayConfigData)
if (this.bannerIndex === 4 || this.bannerIndex === 5 || this.bannerIndex === 6) {
this.allDisplayConfigData.forEach(element => {
if (element.isDisplay && element.bindState && element.deviceInfo && (element.divPosition.includes('OAO') || element.divPosition.includes('TOP'))) {
this.allDeviceIds.push(element.deviceInfo.deviceId)
if (!this.url) {
this.url = 'http://' + element.deviceInfo.deviceIp + ':' + element.deviceInfo.devicePort
}
}
})
console.log('allDeviceIds2', this.allDeviceIds)
this.displayConfigData = this.allDisplayConfigData.filter((item) => { return item.isDisplay && item.bindState && item.deviceInfo && (item.divPosition.includes('OAO') || item.divPosition.includes('TOP')) })
console.log('displayConfigData2', this.displayConfigData)
} else {
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.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
} }
})
console.log('allDeviceIds1', this.allDeviceIds)
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')) })
console.log('displayConfigData', this.displayConfigData)
}
}
})
console.log('allDeviceIds2', this.allDeviceIds)
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')) })
console.log('displayConfigData2', this.displayConfigData)
await this.getRealTimeData() await this.getRealTimeData()
this.handleAQI() this.handleAQI()
}, },
@ -801,39 +470,39 @@ export default {
}) })
}) })
} }
},
getDayYearBorrowNum() {
getDayYearBorrowNum({ ids: this.allDeviceIds, url: this.url }).then((data) => {
if (data) {
this.daylendnum = data.dayBorrow
this.dayreturnnum = data.dayReturn
this.monlendnum = data.monthBorrow
this.monreturnnum = data.monthReturn
}
})
},
}
// getDayYearBorrowNum() {
// getDayYearBorrowNum({ ids: this.allDeviceIds, url: this.url }).then((data) => {
// if (data) {
// this.daylendnum = data.dayBorrow
// this.dayreturnnum = data.dayReturn
// this.monlendnum = data.monthBorrow
// this.monreturnnum = data.monthReturn
// }
// })
// }
// table // table
handleLeftTableNum() {
//
FetchGetArchivesNum().then(data => {
this.totalNum = data
})
// ,
FetchInitArchivesTypeNum().then(data => {
this.filesNum = data.filesNum
this.archivesNum = data.archivesNum
})
// ,线,线
this.handleTotalDeviceNum()
},
// handleLeftTableNum() {
// //
// FetchGetArchivesNum().then(data => {
// this.totalNum = data
// })
// // ,
// FetchInitArchivesTypeNum().then(data => {
// this.filesNum = data.filesNum
// this.archivesNum = data.archivesNum
// })
// // ,线,线
// this.handleTotalDeviceNum()
// },
// ,线,线 // ,线,线
handleTotalDeviceNum() {
Promise.all([getDeviceList({ page: 0, size: 10 }), getOnlineDevice()]).then((result) => {
this.allDevNum = result[0].totalElements
this.lineDevNum = result[1]
this.offDevNum = this.allDevNum - this.lineDevNum
})
}
// handleTotalDeviceNum() {
// Promise.all([getDeviceList({ page: 0, size: 10 }), getOnlineDevice()]).then((result) => {
// this.allDevNum = result[0].totalElements
// this.lineDevNum = result[1]
// this.offDevNum = this.allDevNum - this.lineDevNum
// })
// }
} }
} }
</script> </script>
@ -877,7 +546,7 @@ export default {
overflow: hidden; overflow: hidden;
} }
.container-wrap { .container-wrap {
height: calc(100% / 3 - 14px);
height: calc(100% / 2 - 14px);
min-height: auto; min-height: auto;
} }
.env-item { .env-item {
@ -1120,15 +789,15 @@ export default {
.env-3d { .env-3d {
position: relative; position: relative;
width: 100%; width: 100%;
height: calc(100% - (100% / 4));
margin-bottom: 20px;
height: calc(100%);
// margin-bottom: 20px;
background: url("~@/assets/images/largeScreen/bg.png") no-repeat center -130px; background: url("~@/assets/images/largeScreen/bg.png") no-repeat center -130px;
// background-size: 100% 100%; // background-size: 100% 100%;
overflow: hidden; overflow: hidden;
.iframe_box { .iframe_box {
width: 100%; width: 100%;
height: 100%; height: 100%;
margin-left: -80px;
// margin-left: -80px;
} }
.screen-env-list { .screen-env-list {
position: absolute; position: absolute;

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

@ -5,7 +5,23 @@
<div class="left-3d"> <div class="left-3d">
<iframe id="myIframe" ref="myIframe" name="iframeMap" class="iframe_box" src="/web3D/index.html" frameborder="0" scrolling="no" /> <iframe id="myIframe" ref="myIframe" name="iframeMap" class="iframe_box" src="/web3D/index.html" frameborder="0" scrolling="no" />
<ul class="msg-list"> <ul class="msg-list">
<li v-show="topDisplayData.DAK_DIV_TOP_001.show" :class="{ 'li-warn': topDisplayData.DAK_DIV_TOP_001.curstatus > 0 }">
<!-- :class="{ 'li-warn': newAlarm.DAK_DIV_TOP_001.curstatus > 0 }" -->
<li v-for="item in newAlarm" :key="item.SUBID">
<svg-icon v-if="item.subName === '温度'" icon-class="temperature" class-name="msg-list-svg" />
<svg-icon v-if="item.subName === '湿度'" icon-class="shidu" class-name="msg-list-svg" />
<div class="msg-txt">
<span class="msg-list-num">{{ item.value }}</span>
<p class="msg-list-unit">{{ item.subName }} {{ item.dw }}</p>
</div>
</li>
<!-- <li v-show="newAlarm.DAK_DIV_TOP_002.show" :class="{ 'li-warn': newAlarm.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">{{ newAlarm.DAK_DIV_TOP_002.curValue }}</span>
<p class="msg-list-unit">湿度 {{ newAlarm.DAK_DIV_TOP_002.unit }}</p>
</div>
</li> -->
<!-- <li v-show="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" /> <svg-icon icon-class="temperature" class-name="msg-list-svg" />
<div class="msg-txt"> <div class="msg-txt">
<span class="msg-list-num">{{ topDisplayData.DAK_DIV_TOP_001.curValue }}</span> <span class="msg-list-num">{{ topDisplayData.DAK_DIV_TOP_001.curValue }}</span>
@ -46,7 +62,7 @@
<span class="msg-list-num">{{ topDisplayData.DAK_DIV_TOP_006.curValue }}</span> <span class="msg-list-num">{{ topDisplayData.DAK_DIV_TOP_006.curValue }}</span>
<p class="msg-list-unit">PM10 {{ topDisplayData.DAK_DIV_TOP_006.unit }}</p> <p class="msg-list-unit">PM10 {{ topDisplayData.DAK_DIV_TOP_006.unit }}</p>
</div> </div>
</li>
</li> -->
</ul> </ul>
<!-- air-warn --> <!-- air-warn -->
<div class="air-quality"> <div class="air-quality">
@ -78,7 +94,8 @@
import WarehouseWarning from '@/views/components/WarehouseWarning' import WarehouseWarning from '@/views/components/WarehouseWarning'
import AccessDoor from '@/views/components/AccessDoor' import AccessDoor from '@/views/components/AccessDoor'
import displayConfigApi from '@/api/storeManage/displayConfig' import displayConfigApi from '@/api/storeManage/displayConfig'
import thirdApi from '@/api/thirdApi'
// import thirdApi from '@/api/thirdApi'
import alarmApi from '@/api/home/alarm'
import hkVideo from '../module/hkVideo.vue' import hkVideo from '../module/hkVideo.vue'
export default { export default {
@ -131,18 +148,24 @@ export default {
curstatus: 0 curstatus: 0
} }
}, },
open: false
open: false,
newAlarm: []
} }
}, },
async created() { async created() {
window.getIframeLoading = this.getIframeLoading // vuewindow window.getIframeLoading = this.getIframeLoading // vuewindow
this.allDisplayConfigData = await displayConfigApi.list({ storeroomId: this.roomId }) this.allDisplayConfigData = await displayConfigApi.list({ storeroomId: this.roomId })
this.allDisplayConfigData.forEach(element => { this.allDisplayConfigData.forEach(element => {
if (element.isDisplay && element.bindState && element.deviceInfo && (element.divPosition.includes('OAO') || element.divPosition.includes('TOP'))) {
this.allDeviceIds.push(element.deviceInfo.deviceId)
if (!this.url) {
this.url = 'http://' + element.deviceInfo.deviceIp + ':' + element.deviceInfo.devicePort
}
// if (element.isDisplay && element.bindState && element.deviceInfo && (element.divPosition.includes('OAO') || element.divPosition.includes('TOP'))) {
// this.allDeviceIds.push(element.deviceInfo.deviceId)
// if (!this.url) {
// this.url = 'http://' + element.deviceInfo.deviceIp + ':' + element.deviceInfo.devicePort
// }
// }
console.log('element.deviceInfo', element.deviceInfo)
this.allDeviceIds.push(element.deviceInfo.deviceIp)
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')) }) this.displayConfigData = this.allDisplayConfigData.filter((item) => { return item.isDisplay && item.bindState && item.deviceInfo && (item.divPosition.includes('OAO') || item.divPosition.includes('TOP')) })
@ -234,18 +257,7 @@ export default {
data: this.oaoMessage data: this.oaoMessage
}, '*') }, '*')
}, },
// /
// handleMessageDevice(event) {
// const _this = this
// if (event.data && event.data.data) {
// const data = event.data.data
// if (data.includes('cabinet')) {
// _this.deviceId = data.slice(data.length - 2)
// _this.$router.push('/storeManage/deseCabinet')
// localStorage.setItem('cabinetNum', _this.deviceId)
// }
// }
// },
// 湿 // 湿
handleAQI() { handleAQI() {
this.oaoMessage.forEach(element => { this.oaoMessage.forEach(element => {
@ -272,7 +284,9 @@ export default {
}, },
getRealTimeData() { getRealTimeData() {
if (this.allDeviceIds.length > 0) { if (this.allDeviceIds.length > 0) {
thirdApi.getRealTimeData({ ids: this.allDeviceIds, url: this.url }).then((data) => {
// 192.1.8.228 this.allDeviceIds[0]
alarmApi.FetchDataForIP({ ip: '192.1.8.156:1000' }).then((data) => {
this.newAlarm = data
this.oaoMessage.splice(0, this.oaoMessage.length) this.oaoMessage.splice(0, this.oaoMessage.length)
this.displayConfigData.forEach(element => { this.displayConfigData.forEach(element => {
if (element.divPosition.includes('TOP') && element.deviceSpecParams[0]) { if (element.divPosition.includes('TOP') && element.deviceSpecParams[0]) {

Loading…
Cancel
Save