Files
longdianningxing/acs2/nladmin-ui/src/views/system/monitor/device/index.vue

848 lines
37 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div style="overflow: hidden">
<el-select v-model="stage_code" :placeholder="$t('auto.common.please')" @change="changeStage">
<el-option
v-for="item in Stages"
:key="item.stage_code"
:label="item.stage_name"
:value="item.stage_code"
/>
</el-select>
<el-row>
<div id="container" className="container" style="min-height: 100%" />
</el-row>
<!--点击设备显示信息-->
<el-dialog
id="dialogs"
:title="$t('monitor.click.device_information')"
class="newDialog"
:visible.sync="dialogDeviceMsgVisible"
width="22%"
:top="tops"
:show-close="false"
:modal="false"
>
<el-table
:data="arr"
style="width: 100%"
max-height="500px"
>
<el-table-column
prop="name"
:label="$t('monitor.click.monitor_item')"
/>
<el-table-column
prop="value"
:label="$t('monitor.click.current_value')"
/>
</el-table>
</el-dialog>
<!--弹窗设置设备与图标绑定与角度-->
<el-dialog :title="$t('monitor.click.device_setup')" :visible.sync="dialogFormVisible" width="35%">
<el-form :model="form" size="small">
<el-form-item :label="$t('monitor.click.equipment_number')" prop="device_code" label-width="120px">
<el-input v-model="form.device_code" :disabled="true" />
</el-form-item>
<el-form-item :label="$t('monitor.click.bar_code')" label-width="120px">
<el-input v-model="form.hand_barcode" :disabled="false" />
</el-form-item>
<el-form-item :label="$t('monitor.click.request_flag')" prop="requireSucess" label-width="120px">
<el-radio-group v-model="form.requireSucess">
<el-radio-button :label="0">{{ $t('auto.common.false') }}</el-radio-button>
<el-radio-button :label="1">{{ $t('auto.common.true') }}</el-radio-button>
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible = false">{{ $t('auto.common.Cancel') }}</el-button>
<el-button type="primary" @click="dialogSave">{{ $t('auto.common.Confirm') }}</el-button>
</div>
</el-dialog>
<!--弹窗设置设备与图标绑定与角度-->
<el-dialog :title="$t('monitor.click.device_setup')" :visible.sync="dialogFormVisible3" width="35%">
<el-form :model="form" size="small">
<el-form-item :label="$t('monitor.click.equipment_number')" prop="device_code" label-width="80px">
<el-input v-model="form.device_code" :disabled="true" />
</el-form-item>
<el-form-item :label="$t('monitor.click.device_status')" label-width="80px">
<el-radio-group v-model="form.hasGoodStatus">
<el-radio-button :label="0">{{ $t('monitor.click.out_of_stock') }}</el-radio-button>
<el-radio-button :label="1">{{ $t('monitor.click.with_pallets') }}</el-radio-button>
<el-radio-button :label="2">{{ $t('monitor.click.pallets_and_goods') }}</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item :label="$t('monitor.click.material_code')" prop="material_type" label-width="80px">
<el-input v-model="form.material_type" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible3 = false">{{ $t('auto.common.Cancel') }}</el-button>
<el-button type="primary" @click="dialogSave">{{ $t('auto.common.Confirm') }}</el-button>
</div>
</el-dialog>
<!--弹窗设置设备与图标绑定与角度-->
<el-dialog :title="$t('monitor.click.device_setup')" :visible.sync="dialogFormVisible4" width="35%">
<el-form :model="form" size="small">
<el-form-item :label="$t('monitor.click.equipment_number')" prop="device_code" label-width="120px">
<el-input v-model="form.device_code" :disabled="true" />
</el-form-item>
<el-form-item :label="$t('monitor.click.disabled_manipulator')" prop="is_disable" label-width="120px">
<el-radio-group v-model="form.is_disable">
<el-radio-button :label="0">{{ $t('monitor.click.normal') }}</el-radio-button>
<el-radio-button :label="1">{{ $t('monitor.click.forbidden') }}</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item :label="$t('monitor.click.request_flag')" prop="requireSucess" label-width="120px">
<el-radio-group v-model="form.requireSucess">
<el-radio-button :label="0"> {{ $t('auto.common.false') }}</el-radio-button>
<el-radio-button :label="1">{{ $t('auto.common.true') }}</el-radio-button>
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible4 = false">{{ $t('auto.common.Cancel') }}</el-button>
<el-button type="primary" @click="dialogSave">{{ $t('auto.common.Confirm') }}</el-button>
</div>
</el-dialog>
<el-dialog :title="$t('monitor.click.device_setup')" :visible.sync="dialogFormVisible5" width="35%">
<el-form :model="form" size="small">
<el-form-item :label="$t('monitor.click.equipment_number')" prop="device_code" label-width="120px">
<el-input v-model="form.device_code" :disabled="true" />
</el-form-item>
<el-form-item :label="$t('monitor.click.request_flag')" prop="requireSucess" label-width="120px">
<el-radio-group v-model="form.requireSucess">
<el-radio-button :label="0"> {{ $t('auto.common.false') }}</el-radio-button>
<el-radio-button :label="1">{{ $t('auto.common.true') }}</el-radio-button>
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible5 = false">{{ $t('auto.common.Cancel') }}</el-button>
<el-button type="primary" @click="dialogSave">{{ $t('auto.common.Confirm') }}</el-button>
</div>
</el-dialog>
<el-dialog :title="$t('monitor.click.device_setup')" :visible.sync="dialogFormVisible7" width="35%">
<el-form :model="form" size="small">
<el-form-item :label="$t('monitor.click.equipment_number')" prop="device_code" label-width="120px">
<el-input v-model="form.device_code" :disabled="true" />
</el-form-item>
<el-form-item :label="$t('monitor.click.bar_code')" label-width="120px">
<el-input v-model="form.hand_barcode" :disabled="false" />
</el-form-item>
<el-form-item :label="$t('monitor.click.request_flag')" prop="requireSucess" label-width="120px">
<el-radio-group v-model="form.requireSucess">
<el-radio-button :label="0"> {{ $t('auto.common.false') }}</el-radio-button>
<el-radio-button :label="1">{{ $t('auto.common.true') }}</el-radio-button>
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible7 = false">{{ $t('auto.common.Cancel') }}</el-button>
<el-button type="primary" @click="dialogSave">{{ $t('auto.common.Confirm') }}</el-button>
</div>
</el-dialog>
<el-dialog :title="$t('monitor.click.device_setup')" :visible.sync="dialogFormVisible6" width="35%">
<el-form :model="form" size="small">
<el-form-item :label="$t('monitor.click.equipment_number')" prop="device_code" label-width="120px">
<el-input v-model="form.device_code" :disabled="true" />
</el-form-item>
<el-form-item label="申请指令标记" prop="requireSucess" label-width="120px">
<el-radio-group v-model="form.requireSucess">
<el-radio-button :label="0"> {{ $t('auto.common.false') }}</el-radio-button>
<el-radio-button :label="1">{{ $t('auto.common.true') }}</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item label="请求任务标记" prop="applySucess" label-width="120px">
<el-radio-group v-model="form.applySucess">
<el-radio-button :label="0"> {{ $t('auto.common.false') }}</el-radio-button>
<el-radio-button :label="1">{{ $t('auto.common.true') }}</el-radio-button>
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible5 = false">{{ $t('auto.common.Cancel') }}</el-button>
<el-button type="primary" @click="dialogSave">{{ $t('auto.common.Confirm') }}</el-button>
</div>
</el-dialog>
<!--弹窗设置设备与图标绑定与角度-->
<el-dialog :title="$t('monitor.click.device_setup')" :visible.sync="dialogFormVisible1" width="35%">
<el-form :model="form" size="small">
<el-form-item :label="$t('monitor.click.equipment_number')" prop="device_code" label-width="80px">
<el-input v-model="form.device_code" :disabled="true" />
</el-form-item>
<el-form-item :label="$t('monitor.click.bar_code')" prop="device_code" label-width="80px">
<el-input v-model="form.barcode" :disabled="false" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible1 = false">{{ $t('auto.common.Cancel') }}</el-button>
<el-button type="primary" @click="saveBarcode">{{ $t('auto.common.Confirm') }}</el-button>
</div>
</el-dialog>
<!-- 堆垛机弹出框 -->
<el-dialog :title="$t('monitor.click.device_setup')" :visible.sync="dialogFormVisible8" width="35%">
<el-form :model="form" size="small">
<el-form-item :label="$t('monitor.click.equipment_number')" prop="device_code" label-width="120px">
<el-input v-model="form.device_code" :disabled="true" />
</el-form-item>
<el-form-item :label="$t('monitor.click.job_command')" prop="toCommand" label-width="120px">
<el-radio-group v-model="form.toCommand">
<el-radio-button :label="7">{{ $t('monitor.click.recall') }}</el-radio-button>
<el-radio-button :label="8">{{ $t('monitor.click.scram') }}</el-radio-button>
<el-radio-button :label="5">{{ $t('monitor.click.police_clearance') }}</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item :label="$t('monitor.click.keep_out_of_storage')" prop="prohibitInWarehouse" label-width="120px">
<el-switch v-model="form.prohibitInWarehouse" />
</el-form-item>
<el-form-item :label="$t('monitor.click.no_release')" prop="prohibitOutWarehouse" label-width="120px">
<el-switch v-model="form.prohibitOutWarehouse" />
</el-form-item>
<el-form-item :label="$t('monitor.click.stop_task')" prop="stopReceiveTask" label-width="120px">
<el-switch v-model="form.stopReceiveTask" />
</el-form-item>
<el-form-item :label="$t('monitor.click.requireSucess')" prop="applySucess" label-width="120px">
<el-radio-group v-model="form.requireSucess">
<el-radio-button :label="0"> {{ $t('auto.common.false') }}</el-radio-button>
<el-radio-button :label="1">{{ $t('auto.common.true') }}</el-radio-button>
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible8 = false">{{ $t('auto.common.Cancel') }}</el-button>
<el-button type="primary" @click="dialogSave">{{ $t('auto.common.Confirm') }}</el-button>
</div>
</el-dialog>
<el-dialog :title="$t('monitor.click.device_setup')" :visible.sync="dialogFormVisible10" width="35%">
<el-form :model="form" size="small">
<el-form-item :label="$t('monitor.click.equipment_number')" prop="device_code" label-width="120px">
<el-input v-model="form.device_code" :disabled="true" />
</el-form-item>
<el-form-item :label="$t('monitor.click.bar_code')" label-width="120px">
<el-input v-model="form.hand_barcode" :disabled="false" />
</el-form-item>
<el-form-item :label="$t('monitor.click.material_code')" label-width="120px">
<el-input v-model="form.hand_material_barcode" :disabled="false" />
</el-form-item>
<el-form-item :label="$t('monitor.click.request_flag')" prop="requireSucess" label-width="120px">
<el-radio-group v-model="form.requireSucess">
<el-radio-button :label="0"> {{ $t('auto.common.false') }}</el-radio-button>
<el-radio-button :label="1">{{ $t('auto.common.true') }}</el-radio-button>
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible10 = false">{{ $t('auto.common.Cancel') }}</el-button>
<el-button type="primary" @click="dialogSave">{{ $t('auto.common.Confirm') }}</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import crudStage from '@/api/logicflow/stage'
import deviceCrud from '@/api/acs/device/device'
import { getDeviceByCodes } from '@/api/acs/device/deviceStageMonitor'
import '@logicflow/core/dist/style/index.css'
import '@logicflow/extension/lib/style/index.css'
import { LogicFlow } from '@logicflow/core'
import { registerCustomElement } from '@/views/system/logicflow/editor/components/node'
import i18n from '@/i18n'
import { selectStageList } from '@/api/acs/stage/stage'
let data = {}
let lf = ''
export default {
name: 'MonitorDevice',
data() {
return {
// stageParam: 'stage_code', // 舞台参数
dialogDeviceMsgVisible: false, // 显示设备信息的dialog
device_code: null,
tops: '20vh', // 初始top
stageSelectList: [],
arr: [], // 显示数组
dialogFormVisible: false,
dialogFormVisible1: false,
dialogFormVisible2: false,
dialogFormVisible3: false,
dialogFormVisible4: false,
dialogFormVisible5: false,
dialogFormVisible6: false,
dialogFormVisible7: false,
dialogFormVisible8: false,
dialogFormVisible9: false,
dialogFormVisible10: false,
Stages: [],
stage_code: 'stage_code',
form: {
device_code: '',
hasGoodStatus: null,
barcode: '',
hand_barcode: '',
hand_material_barcode: '',
suspended: null,
material_type: '',
requireSucess: '',
fullrequireSucess: '',
is_disable: '',
applySucess: '',
toCommand: null,
prohibitInWarehouse: false,
prohibitOutWarehouse: false,
stopReceiveTask: false
},
allDeviceMsg: [],
msgTop: '200px',
msgLeft: '200px'
}
},
created() {
selectStageList().then(data => {
this.Stages = data
})
},
mounted() {
this.init()
},
beforeDestroy() {
// js提供的clearInterval方法用来清除定时器
console.log('定时器销毁')
clearInterval(this.timer)
},
methods: {
// 流程图初始化
init() {
// 初始化配置
lf = new LogicFlow({
overlapMode: 1,
container: document.querySelector('#container'), // 容器
// 画布配置
// width: window.innerWidth, // 宽度
height: window.innerHeight, // 高度
grid: { // 不用格子直接显示,使用背景
visible: false,
type: 'mesh',
size: 5
},
background: {
backgroundImage: 'url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHBhdHRlcm4gaWQ9ImdyaWQiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZD0iTSAwIDEwIEwgNDAgMTAgTSAxMCAwIEwgMTAgNDAgTSAwIDIwIEwgNDAgMjAgTSAyMCAwIEwgMjAgNDAgTSAwIDMwIEwgNDAgMzAgTSAzMCAwIEwgMzAgNDAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2QwZDBkMCIgb3BhY2l0eT0iMC4yIiBzdHJva2Utd2lkdGg9IjEiLz48cGF0aCBkPSJNIDQwIDAgTCAwIDAgMCA0MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZDBkMGQwIiBzdHJva2Utd2lkdGg9IjEiLz48L3BhdHRlcm4+PC9kZWZzPjxyZWN0IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JpZCkiLz48L3N2Zz4=")',
backgroundRepeat: 'repeat'
},
isSilentMode: true,
adjustEdge: false,
adjustEdgeMiddle: false,
adjustEdgeStartAndEnd: false,
adjustNodePosition: false,
hideAnchors: true,
nodeTextEdit: false,
edgeTextEdit: false
})
lf.setTheme(
{
baseEdge: { strokeWidth: 1 },
baseNode: { strokeWidth: 1 },
nodeText: { overflowMode: 'autoWrap', lineHeight: 1.5 },
edgeText: { overflowMode: 'autoWrap', lineHeight: 1.5 }
}
)
// 注册自定义元素
registerCustomElement(lf)
// 删除默认的右键菜单
lf.extension.menu.setMenuConfig({
nodeMenu: false
})
lf.on('node:click', (data, e) => { // 鼠标点击节点
console.log('data: ', data)
// 展开显示设备信息
if (data.data.type !== 'pro-rect' && data.data.type !== 'pro-circle' && data.data.type !== 'triangle' && data.data.type !== 'rect-radius') {
if (data.data.properties.device) {
this.moveShow(data.data) // 传递节点数据用来获取id做比对
this.dialogDeviceMsgVisible = true
this.device_code = data.data.properties.device
this.tops = data.e.y + 'px'
document.getElementsByClassName('el-dialog')[0].style.marginLeft = data.e.x + 'px'
}
}
})
lf.on('node:contextmenu', (data, e, position) => { // 右键编辑
if (data.data.type !== 'pro-rect' && data.data.type !== 'pro-circle' && data.data.type !== 'triangle' && data.data.type !== 'rect-radius') {
if (data.data.properties.device) {
this.editDevice(data.data.id) // 编辑
}
}
})
// 开始渲染
lf.render(data)
this.initStageData()
},
changeStage(var1) {
// 获取舞台数据
this.stage_code = var1
crudStage.getNewStageDataByCode(this.stage_code).then(res => { // 通过舞台编码获取舞台数据并且赋值到lf对象
data = JSON.parse(res.stage_data)
lf.render(data)
this.initStatus() // 初始化状态
})
this.timer = setInterval(() => { // 定时刷新设备的状态信息
console.log('定时器启动')
this.initStatus()
}, 200000)
},
editDevice(id) {
let item = ''
for (const i in this.allDeviceMsg) { // 查找点击节点的id
if (id === this.allDeviceMsg[i].id) {
item = this.allDeviceMsg[i]
break // 匹对完退出
}
}
const clickObj = item
console.log('clickObj.data', clickObj.data)
if (!item.data) {
return
}
if (!clickObj.data.is_click) {
return
}
if (clickObj.data.device_type === 'scanner') { // 扫码器
this.dialogFormVisible1 = true
} else {
console.log(clickObj.data.driver_type)
if (clickObj.data.driver_type === 'standard_ordinary_site') {
this.dialogFormVisible3 = true
} else if (clickObj.data.driver_type === 'hailiang_packer_station') {
this.dialogFormVisible4 = true
} else if (clickObj.data.driver_type === 'hailiang_xj_plc_test') {
this.$refs.child1.setForm(clickObj)
} else if (clickObj.data.driver_type === 'slit_two_manipulator') {
this.dialogFormVisible4 = true
} else if (clickObj.data.driver_type === 'siemens_conveyor') {
// if (clickObj.data.device_name.includes('1016')) {
// this.dialogFormVisible7 = true
// } else {
// this.dialogFormVisible5 = true
// }
this.dialogFormVisible7 = true
} else if (clickObj.data.driver_type === 'siemens_conveyor_ckk') {
this.dialogFormVisible7 = true
} else if (clickObj.data.driver_type === 'standard_conveyor_control_with_scanner') {
this.dialogFormVisible6 = true
} else if (clickObj.data.driver_type === 'standard_stacker') {
this.dialogFormVisible8 = true
} else if (clickObj.data.driver_type === 'pull_head_manipulator') {
this.dialogFormVisible9 = true
} else if (clickObj.data.driver_type === 'conveyor_with_scanner_weight') {
this.dialogFormVisible10 = true
} else {
this.dialogFormVisible = true
}
}
this.form.angle = clickObj.angle
this.form.index = clickObj.index
this.form.device_code = clickObj.device_code
this.form.hasGoodStatus = clickObj.data.hasGoods
this.form.material_type = clickObj.data.material_type
this.form.requireSucess = clickObj.data.requireSucess
this.form.fullrequireSucess = clickObj.data.fullrequireSucess
this.form.is_disable = clickObj.data.is_disable1
this.form.applySucess = clickObj.data.applySucess
this.form.barcode = clickObj.data.barcode
this.form.hand_barcode = clickObj.data.hand_barcode
this.form.prohibitInWarehouse = clickObj.data.prohibitInWarehouse
this.form.prohibitOutWarehouse = clickObj.data.prohibitOutWarehouse
this.form.stopReceiveTask = clickObj.data.stopReceiveTask
this.form.toCommand = null
},
moveShow(nodeData) { // 点击之后显示出来的数据----只需要设备信息
let item = ''
for (const i in this.allDeviceMsg) { // 查找点击节点的id
if (nodeData.id === this.allDeviceMsg[i].id) {
item = this.allDeviceMsg[i]
break // 匹对完退出
}
}
this.arr = [] // 清空
if (item.device_code && item.data) {
console.log('item', item)
this.arr = [
{ name: i18n.t('monitor.click.equipment_number'), value: item.device_code },
{ name: i18n.t('monitor.click.device_name'), value: item.device_name }
]
const data = item.data
for (const val in data) {
if (val === 'isOnline' || val === 'isError' || val === 'hasGoods') {
continue
}
if (val === 'message' && data.isError === true) {
const obj = { name: i18n.t('monitor.click.device_information'), value: data[val] }
this.arr.push(obj)
}
if (val === 'message' && data.isError === 'false') {
const obj = { name: i18n.t('monitor.click.exception_message'), value: data[val] }
this.arr.push(obj)
}
if (val === 'move') {
const obj = { name: i18n.t('monitor.click.photoelectric_signal'), value: data[val] }
this.arr.push(obj)
} else if (val === 'mode') {
const obj = { name: i18n.t('monitor.click.mode'), value: data[val] }
this.arr.push(obj)
} else if (val === 'error') {
const obj = { name: i18n.t('monitor.click.alarm'), value: data[val] }
this.arr.push(obj)
} else if (val === 'ip') {
const obj = { name: 'IP', value: data[val] }
this.arr.push(obj)
} else if (val === 'number') {
const obj = { name: i18n.t('monitor.click.pallet_quantity'), value: data[val] }
this.arr.push(obj)
} else if (val === 'inst_message') {
const obj = { name: i18n.t('monitor.click.instruction_information'), value: data[val] }
this.arr.push(obj)
} else if (val === 'message') {
const obj = { name: i18n.t('monitor.click.note_information'), value: data[val] }
this.arr.push(obj)
} else if (val === 'inst_message') {
const obj = { name: i18n.t('monitor.click.current_instruction_message'), value: data[val] }
this.arr.push(obj)
} else if (val === 'last_inst_message') {
const obj = { name: i18n.t('monitor.click.last_instruction_message'), value: data[val] }
this.arr.push(obj)
} else if (val === 'container_type') {
const obj = { name: '托盘类型', value: data[val] }
this.arr.push(obj)
} else if (val === 'barcode') {
const obj = { name: i18n.t('monitor.click.barcode'), value: data[val] }
this.arr.push(obj)
} else if (val === 'barcode_length') {
const obj = { name: i18n.t('monitor.click.barcode_length'), value: data[val] }
this.arr.push(obj)
} else if (val === 'last_container') {
const obj = { name: i18n.t('monitor.click.last_container'), value: data[val] }
this.arr.push(obj)
} else if (val === 'instruction_code') {
const obj = { name: i18n.t('monitor.click.current_instruction_message'), value: data[val] }
this.arr.push(obj)
} else if (val === 'task_code') {
const obj = { name: i18n.t('monitor.click.task_number'), value: data[val] }
this.arr.push(obj)
} else if (val === 'last_instruction_code') {
const obj = { name: i18n.t('monitor.click.last_instruction_message'), value: data[val] }
this.arr.push(obj)
} else if (val === 'action') {
const obj = { name: i18n.t('monitor.click.action_signal'), value: data[val] }
this.arr.push(obj)
} else if (val === 'io_action') {
const obj = { name: i18n.t('monitor.click.clearance_signal'), value: data[val] }
this.arr.push(obj)
} else if (val === 'material') {
const obj = { name: i18n.t('monitor.click.materiel'), value: data[val] }
this.arr.push(obj)
} else if (val === 'batch') {
const obj = { name: i18n.t('monitor.click.lot'), value: data[val] }
this.arr.push(obj)
} else if (val === 'requestSucess') {
const obj = { name: i18n.t('monitor.click.request_task'), value: data[val] }
this.arr.push(obj)
} else if (val === 'applySucess') {
const obj = { name: i18n.t('monitor.click.request_order'), value: data[val] }
this.arr.push(obj)
} else if (val === 'requireApplyLabelingSuccess') {
const obj = { name: i18n.t('monitor.click.apply_labeling'), value: data[val] }
this.arr.push(obj)
} else if (val === 'requireApplyLaStrangulationSuccess') {
const obj = { name: i18n.t('monitor.click.apply_for_bundling'), value: data[val] }
this.arr.push(obj)
} else if (val === 'status') {
const obj = { name: i18n.t('monitor.click.device_status'), value: data[val] }
this.arr.push(obj)
} else if (val === 'weight') {
const obj = { name: i18n.t('monitor.click.weight'), value: data[val] }
this.arr.push(obj)
} else if (val === 'move_1') {
const obj = { name: i18n.t('monitor.click.front_station_photoelectric_signal'), value: data[val] }
this.arr.push(obj)
} else if (val === 'open') {
const obj = { name: i18n.t('monitor.click.open'), value: data[val] }
this.arr.push(obj)
} else if (val === 'close') {
const obj = { name: i18n.t('monitor.click.close'), value: data[val] }
this.arr.push(obj)
} else if (val === 'phase') {
const obj = { name: i18n.t('monitor.click.AGV_phase'), value: data[val] }
this.arr.push(obj)
} else if (val === 'phase_name') {
const obj = { name: i18n.t('monitor.click.description_of_the_AGV_phase'), value: data[val] }
this.arr.push(obj)
} else if (val === 'option') {
const obj = { name: i18n.t('monitor.click.AGV_action'), value: data[val] }
this.arr.push(obj)
} else if (val === 'agv_power') {
const obj = { name: i18n.t('monitor.click.AGV_power'), value: data[val] }
this.arr.push(obj)
} else if (val === 'move_2') {
const obj = { name: i18n.t('monitor.click.station_photoelectric_signal'), value: data[val] }
this.arr.push(obj)
} else if (val === 'action_1') {
const obj = { name: i18n.t('monitor.click.front_station_action_signal'), value: data[val] }
this.arr.push(obj)
} else if (val === 'action_2') {
const obj = { name: i18n.t('monitor.click.back_station_action_signal'), value: data[val] }
this.arr.push(obj)
} else if (val === 'walk_y') {
const obj = { name: i18n.t('monitor.click.walk_y'), value: data[val] }
this.arr.push(obj)
} else if (val === 'task1') {
const obj = { name: i18n.t('monitor.click.previous_station_task'), value: data[val] }
this.arr.push(obj)
} else if (val === 'task2') {
const obj = { name: i18n.t('monitor.click.back_station_task'), value: data[val] }
this.arr.push(obj)
} else if (val === 'task') {
const obj = { name: i18n.t('monitor.click.task_number'), value: data[val] }
this.arr.push(obj)
} else if (val === 'is_disable') {
const obj = { name: i18n.t('monitor.click.disable'), value: data[val] }
this.arr.push(obj)
} else if (val === 'temperature') {
const obj = { name: i18n.t('monitor.click.current_temperature'), value: data[val] }
this.arr.push(obj)
} else if (val === 'finish') {
const obj = { name: i18n.t('monitor.click.oven_finish'), value: data[val] }
this.arr.push(obj)
} else if (val === 'countdown_house') {
const obj = { name: i18n.t('monitor.click.house'), value: data[val] }
this.arr.push(obj)
} else if (val === 'countdown_min') {
const obj = { name: i18n.t('monitor.click.minutes'), value: data[val] }
this.arr.push(obj)
} else if (val === 'countdown_sec') {
const obj = { name: i18n.t('monitor.click.seconds'), value: data[val] }
this.arr.push(obj)
} else if (val === 'door') {
const obj = { name: i18n.t('monitor.click.gate_state'), value: data[val] }
this.arr.push(obj)
} else if (val === 'notCreateTaskMessage') {
const obj = { name: i18n.t('monitor.click.task_creation_failure'), value: data[val] }
this.arr.push(obj)
} else if (val === 'notCreateInstMessage') {
const obj = { name: i18n.t('monitor.click.failed_to_create_instruction'), value: data[val] }
this.arr.push(obj)
} else if (val === 'feedMessage') {
const obj = { name: i18n.t('monitor.click.no_electrical_signal_feedback_cause'), value: data[val] }
this.arr.push(obj)
} else if (val === 'requireSucess') {
const obj = { name: i18n.t('monitor.click.request_success_flag'), value: data[val] }
this.arr.push(obj)
} else if (val === 'applySucess') {
const obj = { name: 'applySucess', value: data[val] }
this.arr.push(obj)
} else if (val === 'out_finish') {
const obj = { name: i18n.t('monitor.click.delivery_completed'), value: data[val] }
this.arr.push(obj)
} else if (val === 'inventory_qty') {
const obj = { name: i18n.t('monitor.click.inventory_quantity'), value: data[val] }
this.arr.push(obj)
} else if (val === 'hand_barcode') {
const obj = { name: 'hand_barcode', value: data[val] }
this.arr.push(obj)
} else if (val === 'x') {
const obj = { name: 'X', value: data[val] }
this.arr.push(obj)
} else if (val === 'y') {
const obj = { name: 'Y', value: data[val] }
this.arr.push(obj)
} else if (val === 'angle') {
const obj = { name: i18n.t('monitor.click.angle'), value: data[val] }
this.arr.push(obj)
} else if (val === 'electricity') {
const obj = { name: i18n.t('monitor.click.electric_quantity'), value: data[val] }
this.arr.push(obj)
} else if (val === 'status_name') {
const obj = { name: i18n.t('monitor.click.status'), value: data[val] }
this.arr.push(obj)
} else if (val === 'fault') {
const obj = { name: i18n.t('monitor.click.abnormal'), value: data[val] }
this.arr.push(obj)
} else if (val === 'map_id') {
const obj = { name: i18n.t('monitor.click.floor'), value: data[val] }
this.arr.push(obj)
} else if (val === 'power') {
const obj = { name: i18n.t('monitor.click.electric_quantity'), value: data[val] }
this.arr.push(obj)
} else if (val === 'pallet') {
const obj = { name: i18n.t('monitor.click.tray'), value: data[val] }
this.arr.push(obj)
} else if (val === 'load') {
const obj = { name: i18n.t('monitor.click.loading_or_not'), value: data[val] }
this.arr.push(obj)
} else if (val === 'alarm') {
const obj = { name: i18n.t('monitor.click.alarm'), value: data[val] }
this.arr.push(obj)
} else if (val === 'task_id') {
const obj = { name: i18n.t('monitor.click.task_number'), value: data[val] }
this.arr.push(obj)
}
}
}
// console.log('arr:', this.arr)
},
initStatus() { // 初始化所有节点的设备信息通过节点id对应设备编号
let resion = {}
resion = lf.getGraphData().nodes.map(item => ({ id: item.id, device_code: item.properties.device }))
getDeviceByCodes(resion).then(res => {
console.log(res)
this.allDeviceMsg = res // 拿到所有节点的设备数据
// console.log('initStatus-res', res)
// 实时设置状态信息
for (var item of res) { // 循环并且设置属性值
if (item.data !== undefined) {
if (item.data.isOnline !== undefined) {
lf.setProperties(item.id, {
isOnline: item.data.isOnline
})
}
if (item.data.hasGoods !== undefined) {
lf.setProperties(item.id, {
hasGoods: item.data.hasGoods
})
}
if (item.data.isError !== undefined) {
lf.setProperties(item.id, {
isError: item.data.isError
})
}
}
}
// 设置动态实时显示设备信息
const { nodes } = lf.getSelectElements() // 获取选中的节点
// console.log(nodes)
if (nodes.length === 1) { // 因为是定时器,没有选中则不用实时更新显示数据
this.moveShow(nodes[0]) // 监控模式下不可能托选,因此就只有一个数据
}
})
},
dialogSave() {
deviceCrud.changeDeviceStatus(this.form).then(res => {
this.$notify({ title: '操作成功', message: '', type: 'success' })
this.dialogFormVisible = false
this.dialogFormVisible3 = false
this.dialogFormVisible4 = false
this.dialogFormVisible5 = false
this.dialogFormVisible6 = false
this.dialogFormVisible7 = false
this.dialogFormVisible8 = false
this.dialogFormVisible9 = false
this.dialogFormVisible10 = false
this.initStageData()
}).catch(err => {
this.dialogFormVisible = false
this.dialogFormVisible3 = false
this.dialogFormVisible4 = false
this.dialogFormVisible5 = false
this.dialogFormVisible7 = false
this.dialogFormVisible8 = false
this.dialogFormVisible9 = false
this.dialogFormVisible10 = false
console.log(err.response.data.message)
})
},
saveBarcode() {
deviceCrud.saveBarcode(this.form).then(res => {
this.notify('操作成功', 'success')
this.dialogFormVisible1 = false
this.initStageData()
}).catch(err => {
this.dialogFormVisible1 = false
console.log(err.response.data.message)
})
},
initStageData() {
// 获取舞台编码
if (this.stage_code !== '') {
crudStage.getNewStageDataByCode(this.stage_code).then(res => { // 通过舞台编码获取舞台数据并且赋值到lf对象
data = JSON.parse(res.stage_data)
lf.render(data)
this.initStatus() // 初始化状态
})
}
// this.timer = setInterval(() => { // 定时刷新设备的状态信息
// console.log('定时器启动')
// this.initStatus()
// }, 2000)
}
}
}
</script>
<style>
html, body {
height: 100%;
}
body {
padding: 0;
margin: 0;
}
</style>
<style scoped>
.container {
background-color: #f8f9fa;
height: 100%;
}
.newDialog /deep/ .el-dialog__header {
padding: 1vh 1vw 0 1vw;
}
.newDialog /deep/ .el-dialog__body {
padding: 1vh 1vw;
}
.toolbar-sty {
position: absolute;
margin-top: 5px;
top: 0;
padding: 5px;
left: 30px;
height: 45px;
/*width: 310px;*/
display: flex;
align-items: center;
border-bottom: 1px solid #e5e5e5;
z-index: 10;
background: #e5e5e5;
}
::v-deep.el-radio-button {
margin-right: 15px;
border-radius: 4px;
}
.el-radio-button__inner {
width: 90px;
height: 30px;
background: #F7F8FA;
color: #333;
border: 0 !important;
}
.el-radio-button__orig-radio:checked + .el-radio-button__inner {
color: #fff;
background-color: blue;
border-color: blue;
box-shadow: -1px 0 0 0 blue;
}
</style>