add:一楼仓库

This commit is contained in:
2026-04-23 16:42:17 +08:00
parent 6c92e035e8
commit 618c9fa527
98 changed files with 10073 additions and 9109 deletions

View File

@@ -1,8 +1,8 @@
ENV = 'development'
# 接口地址
VUE_APP_BASE_API = 'http://localhost:8011'
VUE_APP_WS_API = 'ws://localhost:8011'
VUE_APP_BASE_API = 'http://localhost:8019'
VUE_APP_WS_API = 'ws://localhost:8019'
# 是否启用 babel-plugin-dynamic-import-node插件
VUE_CLI_BABEL_TRANSPILE_MODULES = true

View File

@@ -142,7 +142,9 @@ export default {
'Complement_information': '补码信息',
'agv_task_type': '任务类型',
'vehicle_code2': '木箱号',
'volume_code': '子卷号'
'volume_code': '子卷号',
'container_type': '托盘类型',
'unExecutedMessage': '未执行任务原因',
}
}
}

View File

@@ -63,7 +63,9 @@
</el-col>
<!-- 组件-->
<component :is="currentComponent" :parent-form="form" />
<el-col :span="24">
<component :is="currentComponent" :parent-form="form" />
</el-col>
</el-row>
</div>
@@ -83,6 +85,7 @@ import standard_conveyor_control_with_scanner from '@/views/acs/device/driver/st
import standard_conveyor_control from '@/views/acs/device/driver/standard_conveyor_control'
import standard_conveyor_monitor from '@/views/acs/device/driver/standard_conveyor_monitor'
import double_station_stacker from '@/views/acs/device/driver/double_station_stacker'
import standard_stacker_device from '@/views/acs/device/driver/standard_stacker_device'
// import hailiang_smart_plc_test from '@/views/acs/device/driver/hailiang_smart_plc_test'
// import paint_conveyor from '@/views/acs/device/driver/paint_conveyor'
import standard_stacker from '@/views/acs/device/driver/standard_stacker'
@@ -200,7 +203,8 @@ export default {
paper_tube_pick_size,
one_rgv,
die_manipulator,
raster
raster,
standard_stacker_device
},
dicts: ['device_type'],
mixins: [crud],

View File

@@ -1,62 +1,155 @@
<template>
<!--标准版-输送机-->
<div>
<el-card class="box-card" shadow="never">
<div class="belt-conveyor-page">
<el-card class="box-card config-card" shadow="never">
<div slot="header" class="clearfix">
<span class="role-span">设备协议</span>
</div>
<el-row>
<el-col :span="12">
OpcServer:
<el-select
v-model="opc_id"
placeholder=""
clearable
filterable
@change="changeOpc"
>
<el-option
v-for="item in dataOpcservers"
:key="item.opc_id"
:label="item.opc_name"
:value="item.opc_id"
/>
</el-select>
</el-col>
<el-col :span="12">
PLC:
<el-select
v-model="plc_id"
placeholder="无"
clearable
@change="changePlc"
>
<el-option
v-for="item in dataOpcPlcs"
:key="item.plc_id"
:label="item.plc_name"
:value="item.plc_id"
/>
</el-select>
</el-col>
</el-row>
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="100px" class="protocol-form">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="OpcServer" class="protocol-item">
<el-select
v-model="opc_id"
placeholder="无"
clearable
filterable
class="full-width-select"
@change="changeOpc"
>
<el-option
v-for="item in dataOpcservers"
:key="item.opc_id"
:label="item.opc_name"
:value="item.opc_id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="PLC" class="protocol-item">
<el-select
v-model="plc_id"
placeholder="无"
clearable
filterable
class="full-width-select"
@change="changePlc"
>
<el-option
v-for="item in dataOpcPlcs"
:key="item.plc_id"
:label="item.plc_name"
:value="item.plc_id"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
<el-card class="box-card" shadow="never">
<el-card class="box-card config-card" shadow="never">
<div slot="header" class="clearfix">
<span class="role-span">开关</span>
</div>
<el-form ref="form" class="config-form" :inline="true" :model="form" :rules="rules" size="small" label-width="78px">
<el-row :gutter="20" class="form-grid">
<el-col :span="12">
<el-form-item label="忽略工作模式校验" label-width="150px">
<el-switch v-model="form.ignore_pickup_check"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="放货校验" label-width="150px">
<el-switch v-model="form.ignore_release_check"/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20" class="form-grid">
<el-col :span="12">
<el-form-item label="双向点位" label-width="150px">
<el-switch v-model="form.isTwoWayPoint"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="创建指令" label-width="150px">
<el-switch v-model="form.isCreateInst"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
<el-card class="box-card config-card" shadow="never">
<div slot="header" class="clearfix">
<span class="role-span">输送系统</span>
</div>
<el-form ref="form" class="config-form" :inline="true" :model="form" :rules="rules" size="small" label-width="78px">
<el-row :gutter="20" class="form-grid">
<el-col :span="12">
<el-form-item label="电气调度号" label-width="150px">
<el-input v-model="form.address"/>
</el-form-item>
</el-col>
<el-col :span="12"/>
</el-row>
</el-form>
</el-card>
<el-card class="box-card config-card" shadow="never">
<div slot="header" class="clearfix">
<span class="role-span">指令相关</span>
</div>
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="78px">
<el-row>
<el-col :span="8">
<el-form-item label="关联设备" prop="device_code">
<el-form ref="form" class="config-form" :inline="true" :model="form" :rules="rules" size="small" label-width="78px">
<el-row :gutter="20" class="form-grid">
<el-col :span="12">
<el-form-item label="排:" label-width="150px" prop="x">
<el-input v-model.number="form.x"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="列:" label-width="150px" prop="z">
<el-input v-model.number="form.z"/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20" class="form-grid">
<el-col :span="12">
<el-form-item label="层:" label-width="150px" prop="y">
<el-input v-model.number="form.y"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="目标设备:" prop="targetDeviceCode" label-width="150px">
<el-select
v-model="form.targetDeviceCode"
filterable
clearable
multiple
reserve-keyword
placeholder="请选择目标点位"
style="width: 170px"
>
<el-option
v-for=" item in deviceList"
:key="item.device_id"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="关联设备:" prop="device_code" label-width="150px">
<el-select
v-model="form.link_device_code"
filterable
multiple
clearable
placeholder="请选择"
style="width: 170px"
>
<el-option
v-for="item in deviceList"
@@ -67,87 +160,35 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="忽略工作模式校验" label-width="150px">
<el-switch v-model="form.ignore_pickup_check" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="放货校验" label-width="150px">
<el-switch v-model="form.ignore_release_check" />
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
<el-card class="box-card" shadow="never">
<div slot="header" class="clearfix">
<span class="role-span">输送系统</span>
</div>
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="78px">
<el-row>
<el-col :span="8">
<el-form-item label="电气调度号" label-width="150px">
<el-input v-model="form.address" />
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
<el-card class="box-card" shadow="never">
<div slot="header" class="clearfix">
<span class="role-span">指令相关</span>
</div>
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="78px">
<el-row>
<el-col :span="12">
<el-form-item label="排:" label-width="150px" prop="x">
<el-input v-model.number="form.x" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="列:" label-width="150px" prop="z">
<el-input v-model.number="form.z" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="层:" label-width="150px" prop="yY">
<el-input v-model.number="form.y" />
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
<el-card class="box-card" shadow="never">
<el-card class="box-card config-card" shadow="never">
<div slot="header" class="clearfix">
<span class="role-span">AGV相关</span>
</div>
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="78px">
<el-row>
<el-col :span="8">
<el-form ref="form" class="config-form" :inline="true" :model="form" :rules="rules" size="small" label-width="78px">
<el-row :gutter="20" class="form-grid">
<el-col :span="12">
<el-form-item label="取货">
<el-switch v-model="form.is_pickup" />
<el-switch v-model="form.is_pickup"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="12">
<el-form-item label="放货">
<el-switch v-model="form.is_release" />
<el-switch v-model="form.is_release"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
<el-card class="box-card" shadow="never">
<el-card class="box-card config-card" shadow="never">
<div slot="header" class="clearfix">
<span class="role-span">PLC读取字段</span>
</div>
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="78px">
<el-form ref="form" class="config-form" :inline="true" :model="form" :rules="rules" size="small" label-width="78px">
<el-table
v-loading="false"
:data="data1"
@@ -156,8 +197,8 @@
style="width: 100%;margin-bottom: 15px"
>
<el-table-column prop="name" label="用途" />
<el-table-column prop="code" label="别名要求" />
<el-table-column prop="name" label="用途"/>
<el-table-column prop="code" label="别名要求"/>
<el-table-column prop="db" label="DB块">
<template slot-scope="scope">
<el-input
@@ -173,18 +214,18 @@
<el-link type="primary" :underline="false" @click.native="test_read1()">测试读</el-link>
</template>
<template slot-scope="scope">
<el-input v-model="data1[scope.$index].dbr_value" size="mini" class="edit-input" />
<el-input v-model="data1[scope.$index].dbr_value" size="mini" class="edit-input"/>
</template>
</el-table-column>
</el-table>
</el-form>
</el-card>
<el-card class="box-card" shadow="never">
<el-card class="box-card config-card" shadow="never">
<div slot="header" class="clearfix">
<span class="role-span">PLC写入字段</span>
</div>
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="78px">
<el-form ref="form" class="config-form" :inline="true" :model="form" :rules="rules" size="small" label-width="78px">
<el-table
v-loading="false"
:data="data2"
@@ -193,8 +234,8 @@
style="width: 100%;margin-bottom: 15px"
>
<el-table-column prop="name" label="用途" />
<el-table-column prop="code" label="别名要求" />
<el-table-column prop="name" label="用途"/>
<el-table-column prop="code" label="别名要求"/>
<el-table-column prop="db" label="DB块">
<template slot-scope="scope">
<el-input
@@ -210,7 +251,7 @@
<el-link type="primary" :underline="false" @click.native="test_read2()">测试读</el-link>
</template>
<template slot-scope="scope">
<el-input v-model="data2[scope.$index].dbr_value" size="mini" class="edit-input" />
<el-input v-model="data2[scope.$index].dbr_value" size="mini" class="edit-input"/>
</template>
</el-table-column>
<el-table-column prop="dbw_value">
@@ -218,28 +259,28 @@
<el-link type="primary" :underline="false" @click.native="test_write1()">测试写</el-link>
</template>
<template slot-scope="scope">
<el-input v-model="data2[scope.$index].dbw_value" size="mini" class="edit-input" />
<el-input v-model="data2[scope.$index].dbw_value" size="mini" class="edit-input"/>
</template>
</el-table-column>
</el-table>
</el-form>
</el-card>
<el-card class="box-card" shadow="never">
<div slot="header" class="clearfix">
<span class="role-span" />
<el-card class="box-card action-card" shadow="never">
<div class="action-bar">
<div>
</div>
<el-button
:loading="false"
icon="el-icon-check"
size="mini"
style="float: right; padding: 6px 9px"
size="small"
type="primary"
class="save-button"
@click="doSubmit"
>保存
</el-button>
</div>
</el-card>
</div>
</template>
@@ -250,9 +291,9 @@ import {
testRead,
testwrite
} from '@/api/acs/device/driverConfig'
import { selectOpcList } from '@/api/acs/device/opc'
import { selectPlcList } from '@/api/acs/device/opcPlc'
import { selectListByOpcID } from '@/api/acs/device/opcPlc'
import {selectOpcList} from '@/api/acs/device/opc'
import {selectPlcList} from '@/api/acs/device/opcPlc'
import {selectListByOpcID} from '@/api/acs/device/opcPlc'
import crud from '@/mixins/crud'
import deviceCrud from '@/api/acs/device/device'
@@ -285,13 +326,19 @@ export default {
inspect_in_stocck: true,
ignore_pickup_check: false,
ignore_release_check: true,
apply_task: true,
targetDeviceCode: null,
apply_task: false,
link_three_lamp: '',
manual_create_task: true,
is_pickup: true,
is_release: true,
link_device_code: [],
ship_device_update: true
checkoutStartDeviceCode: null,
ship_device_update: true,
isTwoWayPoint: false,
isCreateInst: false,
cacheDeviceCode: null,
maxInstNum: null
},
rules: {}
}
@@ -598,4 +645,81 @@ export default {
</script>
<style scoped>
.belt-conveyor-page {
padding-bottom: 8px;
}
.config-card {
margin-bottom: 16px;
border-radius: 14px;
border: 1px solid #e8edf5;
overflow: hidden;
}
.config-card /deep/ .el-card__header {
padding: 16px 20px;
background: linear-gradient(180deg, #fbfcfe 0%, #f4f7fb 100%);
border-bottom: 1px solid #eef2f7;
}
.config-card /deep/ .el-card__body {
padding: 20px;
}
.protocol-form {
margin-bottom: -8px;
}
.protocol-item /deep/ .el-form-item__content {
width: calc(100% - 100px);
}
.full-width-select {
width: 100%;
}
.action-card {
border-radius: 14px;
border: 1px solid #dbe7ff;
background: linear-gradient(135deg, #f7fbff 0%, #eef5ff 100%);
}
.action-card /deep/ .el-card__body {
padding: 18px 20px;
}
.action-bar {
display: flex;
align-items: center;
justify-content: space-between;
gap: 20px;
}
.action-title {
color: #1d2a3a;
font-size: 15px;
font-weight: 600;
line-height: 22px;
}
.action-desc {
margin-top: 4px;
color: #6f7c91;
font-size: 12px;
line-height: 18px;
}
.save-button {
min-width: 88px;
height: 36px;
padding: 0 20px;
border-radius: 18px;
}
@media (max-width: 768px) {
.action-bar {
flex-direction: column;
align-items: flex-start;
}
}
</style>

View File

@@ -66,7 +66,7 @@
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="78px">
<el-row>
<el-col :span="8">
<el-form-item label="检验有货">
<el-form-item label="检验有货" label-width="150px">
<el-switch v-model="form.inspect_in_stocck" />
</el-form-item>
</el-col>
@@ -84,7 +84,7 @@
<el-row>
<el-col :span="8">
<el-form-item label="呼叫">
<el-form-item label="呼叫" label-width="150px">
<el-switch v-model="form.apply_task" />
</el-form-item>
</el-col>
@@ -93,53 +93,16 @@
<el-switch v-model="form.manual_create_task" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="关联设备" prop="device_code">
<el-select
v-model="form.link_device_code"
filterable
multiple
clearable
placeholder="请选择"
>
<el-option
v-for="item in deviceList"
:key="item.device_code"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="关联三色灯" prop="device_code" label-width="100px">
<el-select
v-model="form.link_three_lamp"
filterable
clearable
placeholder="请选择"
>
<el-option
v-for="item in deviceList"
:key="item.device_code"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否输入物料" label-width="150px">
<el-switch v-model="form.input_material" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="取货点" prop="device_code">
<el-form-item label="取货点" prop="device_code" label-width="100px">
<el-select
v-model="form.get_device_code"
multiple
@@ -174,6 +137,43 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="关联设备" prop="device_code">
<el-select
v-model="form.link_device_code"
filterable
multiple
clearable
placeholder="请选择"
>
<el-option
v-for="item in deviceList"
:key="item.device_code"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="关联三色灯" prop="device_code" label-width="100px">
<el-select
v-model="form.link_three_lamp"
filterable
clearable
placeholder="请选择"
>
<el-option
v-for="item in deviceList"
:key="item.device_code"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>

View File

@@ -43,6 +43,42 @@
</el-row>
</el-card>
<el-card class="box-card" shadow="never">
<div slot="header" class="clearfix">
<span class="role-span">开关</span>
</div>
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="78px">
<el-row>
<el-col :span="6">
<el-form-item label="忽略工作模式校验" label-width="150px">
<el-switch v-model="form.ignore_pickup_check"/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="放货校验" label-width="150px">
<el-switch v-model="form.ignore_release_check"/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="申请任务" label-width="150px">
<el-switch v-model="form.apply_task"/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="双向点位" label-width="150px">
<el-switch v-model="form.isTwoWayPoint"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="创建指令" label-width="150px">
<el-switch v-model="form.isCreateInst"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
<el-card class="box-card" shadow="never">
<div slot="header" class="clearfix">
@@ -93,11 +129,16 @@
<el-switch v-model="form.manual_create_task" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否输入物料" label-width="150px">
<el-switch v-model="form.input_material" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="关联设备" prop="device_code">
<el-form-item label="关联设备" prop="device_code" label-width="100px">
<el-select
v-model="form.link_device_code"
filterable
@@ -147,11 +188,7 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否输入物料" label-width="150px">
<el-switch v-model="form.input_material" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
@@ -188,6 +225,74 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="目标设备" prop="targetDeviceCode" label-width="100px">
<el-select
v-model="form.targetDeviceCode"
filterable
clearable
multiple
reserve-keyword
placeholder="请选择目标点位"
>
<el-option
v-for=" item in deviceList"
:key="item.device_id"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="禁止起点" prop="checkoutStartDeviceCode" label-width="100px">
<el-select
v-model="form.checkoutStartDeviceCode"
filterable
clearable
multiple
reserve-keyword
placeholder="出库禁止的起点"
>
<el-option
v-for=" item in deviceList"
:key="item.device_id"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="关联指令终点" prop="cacheDeviceCode" label-width="100px">
<el-select
v-model="form.cacheDeviceCode"
filterable
clearable
reserve-keyword
placeholder="要查询的指令终点"
>
<el-option
v-for=" item in deviceList"
:key="item.device_id"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="最大指令数量" label-width="100px">
<el-input
v-model.number="form.maxInstNum"
type="number"
:min="1"
:step="1"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
@@ -372,9 +477,15 @@ export default {
link_three_lamp: '',
link_scanner: '',
manual_create_task: true,
checkoutStartDeviceCode: null,
is_pickup: true,
is_release: true,
link_device_code: []
link_device_code: [],
isTwoWayPoint: false,
isCreateInst: false,
targetDeviceCode: null,
cacheDeviceCode: null,
maxInstNum: null
},
rules: {}
}

View File

@@ -43,6 +43,42 @@
</el-row>
</el-card>
<el-card class="box-card" shadow="never">
<div slot="header" class="clearfix">
<span class="role-span">开关</span>
</div>
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="78px">
<el-row>
<el-col :span="6">
<el-form-item label="忽略工作模式校验" label-width="150px">
<el-switch v-model="form.ignore_pickup_check"/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="放货校验" label-width="150px">
<el-switch v-model="form.ignore_release_check"/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="申请任务" label-width="150px">
<el-switch v-model="form.apply_task"/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="双向点位" label-width="150px">
<el-switch v-model="form.isTwoWayPoint"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="创建指令" label-width="150px">
<el-switch v-model="form.isCreateInst"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
<el-card class="box-card" shadow="never">
<div slot="header" class="clearfix">
@@ -82,6 +118,97 @@
<el-input v-model.number="form.y" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="目标设备:" prop="targetDeviceCode" label-width="150px">
<el-select
v-model="form.targetDeviceCode"
filterable
clearable
multiple
reserve-keyword
placeholder="请选择目标点位"
style="width: 170px"
>
<el-option
v-for=" item in deviceList"
:key="item.device_id"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="关联设备:" prop="device_code" label-width="150px">
<el-select
v-model="form.link_device_code"
filterable
multiple
clearable
placeholder="请选择"
style="width: 170px"
>
<el-option
v-for="item in deviceList"
:key="item.device_code"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="禁止起点:" prop="checkoutStartDeviceCode" label-width="100px">
<el-select
v-model="form.checkoutStartDeviceCode"
filterable
clearable
multiple
reserve-keyword
placeholder="出库禁止的起点"
>
<el-option
v-for=" item in deviceList"
:key="item.device_id"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="关联指令终点:" prop="cacheDeviceCode" label-width="150px">
<el-select
v-model="form.cacheDeviceCode"
filterable
clearable
reserve-keyword
placeholder="要查询的指令终点"
style="width: 170px"
>
<el-option
v-for=" item in deviceList"
:key="item.device_id"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="最大指令数量:" label-width="150px">
<el-input
v-model.number="form.maxInstNum"
type="number"
:min="1"
:step="1"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
@@ -248,13 +375,19 @@ export default {
inspect_in_stocck: true,
ignore_pickup_check: true,
ignore_release_check: true,
apply_task: true,
apply_task: false,
link_three_lamp: '',
manual_create_task: true,
targetDeviceCode: null,
checkoutStartDeviceCode: null,
is_pickup: true,
is_release: true,
link_device_code: [],
ship_device_update: true
ship_device_update: true,
isTwoWayPoint: false,
isCreateInst: false,
cacheDeviceCode: null,
maxInstNum: null
},
rules: {}
}

View File

@@ -44,6 +44,43 @@
</el-card>
<el-card class="box-card" shadow="never">
<div slot="header" class="clearfix">
<span class="role-span">开关</span>
</div>
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="78px">
<el-row>
<el-col :span="6">
<el-form-item label="忽略工作模式校验" label-width="150px">
<el-switch v-model="form.ignore_pickup_check"/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="放货校验" label-width="150px">
<el-switch v-model="form.ignore_release_check"/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="申请任务" label-width="150px">
<el-switch v-model="form.apply_task"/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="双向点位" label-width="150px">
<el-switch v-model="form.isTwoWayPoint"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="创建指令" label-width="150px">
<el-switch v-model="form.isCreateInst"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
<el-card class="box-card" shadow="never">
<div slot="header" class="clearfix">
<span class="role-span">输送系统</span>
@@ -82,6 +119,97 @@
<el-input v-model.number="form.y" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="目标设备:" prop="targetDeviceCode" label-width="150px">
<el-select
v-model="form.targetDeviceCode"
filterable
clearable
multiple
reserve-keyword
placeholder="请选择目标点位"
style="width: 170px"
>
<el-option
v-for=" item in deviceList"
:key="item.device_id"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="关联设备:" prop="device_code" label-width="150px">
<el-select
v-model="form.link_device_code"
filterable
multiple
clearable
placeholder="请选择"
style="width: 170px"
>
<el-option
v-for="item in deviceList"
:key="item.device_code"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="禁止起点:" prop="checkoutStartDeviceCode" label-width="100px">
<el-select
v-model="form.checkoutStartDeviceCode"
filterable
clearable
multiple
reserve-keyword
placeholder="出库禁止的起点"
>
<el-option
v-for=" item in deviceList"
:key="item.device_id"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="关联指令终点:" prop="cacheDeviceCode" label-width="150px">
<el-select
v-model="form.cacheDeviceCode"
filterable
clearable
reserve-keyword
placeholder="要查询的指令终点"
style="width: 170px"
>
<el-option
v-for=" item in deviceList"
:key="item.device_id"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="最大指令数量:" label-width="150px">
<el-input
v-model.number="form.maxInstNum"
type="number"
:min="1"
:step="1"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
@@ -254,7 +382,13 @@ export default {
is_pickup: true,
is_release: true,
link_device_code: [],
ship_device_update: true
ship_device_update: true,
checkoutStartDeviceCode: null,
isTwoWayPoint: false,
isCreateInst: false,
targetDeviceCode: null,
cacheDeviceCode: null,
maxInstNum: null
},
rules: {}
}

View File

@@ -43,7 +43,42 @@
</el-row>
</el-card>
<el-card class="box-card" shadow="never">
<div slot="header" class="clearfix">
<span class="role-span">开关</span>
</div>
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="78px">
<el-row>
<el-col :span="6">
<el-form-item label="忽略工作模式校验" label-width="150px">
<el-switch v-model="form.ignore_pickup_check"/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="放货校验" label-width="150px">
<el-switch v-model="form.ignore_release_check"/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="申请任务" label-width="150px">
<el-switch v-model="form.apply_task"/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="双向点位" label-width="150px">
<el-switch v-model="form.isTwoWayPoint"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="创建指令" label-width="150px">
<el-switch v-model="form.isCreateInst"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
<el-card class="box-card" shadow="never">
<div slot="header" class="clearfix">
<span class="role-span">输送系统</span>
@@ -82,6 +117,97 @@
<el-input v-model.number="form.y" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="目标设备:" prop="targetDeviceCode" label-width="150px">
<el-select
v-model="form.targetDeviceCode"
filterable
clearable
multiple
reserve-keyword
placeholder="请选择目标点位"
style="width: 170px"
>
<el-option
v-for=" item in deviceList"
:key="item.device_id"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="关联设备:" prop="device_code" label-width="150px">
<el-select
v-model="form.link_device_code"
filterable
multiple
clearable
placeholder="请选择"
style="width: 170px"
>
<el-option
v-for="item in deviceList"
:key="item.device_code"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="禁止起点:" prop="checkoutStartDeviceCode" label-width="100px">
<el-select
v-model="form.checkoutStartDeviceCode"
filterable
clearable
multiple
reserve-keyword
placeholder="出库禁止的起点"
>
<el-option
v-for=" item in deviceList"
:key="item.device_id"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="关联指令终点:" prop="cacheDeviceCode" label-width="150px">
<el-select
v-model="form.cacheDeviceCode"
filterable
clearable
reserve-keyword
placeholder="要查询的指令终点"
style="width: 170px"
>
<el-option
v-for=" item in deviceList"
:key="item.device_id"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="最大指令数量:" label-width="150px">
<el-input
v-model.number="form.maxInstNum"
type="number"
:min="1"
:step="1"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
@@ -254,7 +380,13 @@ export default {
is_pickup: true,
is_release: true,
link_device_code: [],
ship_device_update: true
checkoutStartDeviceCode: null,
ship_device_update: true,
isTwoWayPoint: false,
isCreateInst: false,
targetDeviceCode: null,
cacheDeviceCode: null,
maxInstNum: null
},
rules: {}
}

View File

@@ -43,6 +43,42 @@
</el-row>
</el-card>
<el-card class="box-card" shadow="never">
<div slot="header" class="clearfix">
<span class="role-span">开关</span>
</div>
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="78px">
<el-row>
<el-col :span="6">
<el-form-item label="忽略工作模式校验" label-width="150px">
<el-switch v-model="form.ignore_pickup_check"/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="放货校验" label-width="150px">
<el-switch v-model="form.ignore_release_check"/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="申请任务" label-width="150px">
<el-switch v-model="form.apply_task"/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="双向点位" label-width="150px">
<el-switch v-model="form.isTwoWayPoint"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="创建指令" label-width="150px">
<el-switch v-model="form.isCreateInst"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
<el-card class="box-card" shadow="never">
<div slot="header" class="clearfix">
@@ -82,6 +118,66 @@
<el-input v-model.number="form.y" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="目标设备:" prop="targetDeviceCode" label-width="150px">
<el-select
v-model="form.targetDeviceCode"
filterable
clearable
multiple
reserve-keyword
placeholder="请选择目标点位"
style="width: 170px"
>
<el-option
v-for=" item in deviceList"
:key="item.device_id"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="关联设备:" prop="device_code" label-width="150px">
<el-select
v-model="form.link_device_code"
filterable
multiple
clearable
placeholder="请选择"
style="width: 170px"
>
<el-option
v-for="item in deviceList"
:key="item.device_code"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="禁止起点:" prop="checkoutStartDeviceCode" label-width="100px">
<el-select
v-model="form.checkoutStartDeviceCode"
filterable
clearable
multiple
reserve-keyword
placeholder="出库禁止的起点"
>
<el-option
v-for=" item in deviceList"
:key="item.device_id"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
@@ -254,7 +350,11 @@ export default {
is_pickup: true,
is_release: true,
link_device_code: [],
ship_device_update: true
checkoutStartDeviceCode: null,
ship_device_update: true,
isTwoWayPoint: false,
isCreateInst: false,
targetDeviceCode: null
},
rules: {}
}

View File

@@ -103,17 +103,17 @@
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="78px">
<el-row>
<el-col :span="8">
<el-form-item label="检验有货">
<el-form-item label="检验有货" label-width="100px">
<el-switch v-model="form.inspect_in_stocck" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="取货校验" label-width="150px">
<el-form-item label="取货校验" label-width="100px">
<el-switch v-model="form.ignore_pickup_check" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="放货校验" label-width="150px">
<el-form-item label="放货校验" label-width="100px">
<el-switch v-model="form.ignore_release_check" />
</el-form-item>
</el-col>
@@ -121,62 +121,25 @@
<el-row>
<el-col :span="8">
<el-form-item label="呼叫">
<el-form-item label="呼叫" label-width="100px">
<el-switch v-model="form.apply_task" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="响应" label-width="150px">
<el-form-item label="响应" label-width="100px">
<el-switch v-model="form.manual_create_task" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否输入物料" label-width="100px">
<el-switch v-model="form.input_material" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="关联设备" prop="device_code">
<el-select
v-model="form.link_device_code"
filterable
multiple
clearable
placeholder="请选择"
>
<el-option
v-for="item in deviceList"
:key="item.device_code"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="关联三色灯" prop="device_code" label-width="100px">
<el-select
v-model="form.link_three_lamp"
filterable
clearable
placeholder="请选择"
>
<el-option
v-for="item in deviceList"
:key="item.device_code"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否输入物料" label-width="150px">
<el-switch v-model="form.input_material" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="取货点" prop="device_code">
<el-form-item label="取货点" prop="device_code" label-width="100px">
<el-select
v-model="form.get_device_code"
multiple
@@ -211,6 +174,43 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="关联设备" prop="device_code" label-width="100px">
<el-select
v-model="form.link_device_code"
filterable
multiple
clearable
placeholder="请选择"
>
<el-option
v-for="item in deviceList"
:key="item.device_code"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="关联三色灯" prop="device_code" label-width="100px">
<el-select
v-model="form.link_three_lamp"
filterable
clearable
placeholder="请选择"
>
<el-option
v-for="item in deviceList"
:key="item.device_code"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>

View File

@@ -0,0 +1,835 @@
<template>
<!--双工位堆垛机-->
<div>
<el-card class="box-card" shadow="never">
<div slot="header" class="clearfix">
<span class="role-span">设备协议</span>
</div>
<el-row>
<el-col :span="12">
OpcServer:
<el-select
v-model="opc_id"
placeholder="无"
clearable
filterable
@change="changeOpc"
>
<el-option
v-for="item in dataOpcservers"
:key="item.opc_id"
:label="item.opc_name"
:value="item.opc_id"
/>
</el-select>
</el-col>
<el-col :span="12">
PLC:
<el-select
v-model="plc_id"
placeholder="无"
clearable
@change="changePlc"
>
<el-option
v-for="item in dataOpcPlcs"
:key="item.plc_id"
:label="item.plc_name"
:value="item.plc_id"
/>
</el-select>
</el-col>
</el-row>
</el-card>
<el-card class="box-card" shadow="never">
<div slot="header" class="clearfix">
<span class="role-span">输送系统</span>
</div>
<el-form
ref="form"
:inline="true"
:model="form"
:rules="rules"
size="small"
label-width="78px"
>
<el-row>
<el-col :span="8">
<el-form-item label="电气调度号" label-width="150px">
<el-input v-model="form.address" />
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
<el-card class="box-card" shadow="never">
<div slot="header" class="clearfix">
<span class="role-span">指令相关</span>
</div>
<el-form
ref="form"
:inline="true"
:model="form"
:rules="rules"
size="small"
label-width="78px"
>
<el-row>
<el-col :span="8">
<el-form-item label="出入库策略:" prop="device_code" label-width="110px">
<el-select
v-model="form.strategyValue"
filterable
clearable
reserve-keyword
placeholder="请选择"
>
<el-option
v-for=" option in options"
:key="option.value"
:label="option.label"
:value="option.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="前叉可达设备:" prop="frontDeviceCodeList" label-width="110px">
<el-select
v-model="form.frontDeviceCodeList"
filterable
multiple
clearable
reserve-keyword
placeholder="请选择输送线设备"
>
<el-option
v-for=" item in deviceList"
:key="item.device_id"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="后叉可达设备:" prop="backDeviceCodeList" label-width="110px">
<el-select
v-model="form.backDeviceCodeList"
filterable
multiple
clearable
reserve-keyword
placeholder="请选择输送线设备"
>
<el-option
v-for=" item in deviceList"
:key="item.device_id"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="移库设备:" prop="xDeviceCodeList" label-width="110px">
<el-select
v-model="form.xDeviceCodeList"
filterable
multiple
clearable
reserve-keyword
placeholder="请选择移库排"
>
<el-option
v-for=" item in deviceList"
:key="item.device_id"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="前叉禁止列:" label-width="110px" prop="frontNoY">
<el-input v-model="form.frontNoY" placeholder="以英文, 分隔" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="后叉禁止列:" label-width="110px" prop="backNoY">
<el-input v-model="form.backNoY" placeholder="以英文, 分隔" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="堆垛机类型:" label-width="110px" prop="backNoY">
<el-select
v-model="form.stackerNum"
filterable
clearable
reserve-keyword
placeholder="请选择"
>
<el-option
v-for=" option in stackerNums"
:key="option.value"
:label="option.label"
:value="option.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="特殊取货设备:" prop="specialGetDevice" label-width="110px">
<el-select
v-model="form.specialGetDevice"
filterable
multiple
clearable
reserve-keyword
placeholder="请选择输送线设备"
>
<el-option
v-for=" item in deviceList"
:key="item.device_id"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="特殊放货设备:" prop="specialPutDevice" label-width="110px">
<el-select
v-model="form.specialPutDevice"
filterable
multiple
clearable
reserve-keyword
placeholder="请选择输送线设备"
>
<el-option
v-for=" item in deviceList"
:key="item.device_id"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="楼层优先级:" prop="floorPriority" label-width="110px">
<el-select
v-model="form.floorPriority"
filterable
clearable
reserve-keyword
placeholder="请选择楼层优先级"
>
<el-option
v-for=" item in floorPriorityList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="对接位坐标:" label-width="110px" prop="originPoint">
<el-input v-model="form.originPoint" placeholder="排列层以,分隔" />
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
<el-card class="box-card" shadow="never">
<div slot="header" class="clearfix">
<span class="role-span">对接位相关</span>
</div>
<div class="crud-opts2" style="margin-bottom: 5px;">
<span class="crud-opts-right2">
<!--左侧插槽-->
<slot name="left" />
<el-button
slot="left"
class="filter-item"
type="primary"
icon="el-icon-plus"
size="mini"
@click="insertdtl()"
>
新增一行
</el-button>
</span>
</div>
<div class="app-container">
<el-table :data="form.floorPoint" border fit highlight-current-row style="width: 100%;" class="tb-edit">
<el-table-column label="楼层" prop="floor">
<template scope="scope">
<el-select
v-model="scope.row.floor"
filterable
clearable
placeholder="请选择"
>
<el-option
v-for="item in floorList"
:label="item.label"
:value="item.value"
/>
</el-select>
</template>
</el-table-column>
<el-table-column label="入库对接点" prop="inPoints">
<template scope="scope">
<el-select
v-model="scope.row.inPoints"
filterable
clearable
multiple
placeholder="请选择"
>
<el-option
v-for="item in deviceList"
:key="item.device_id"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</template>
</el-table-column>
<el-table-column label="出库对接点" prop="outPoints">
<template scope="scope">
<el-select
v-model="scope.row.outPoints"
filterable
clearable
multiple
placeholder="请选择"
>
<el-option
v-for="item in deviceList"
:key="item.device_id"
:label="item.device_name"
:value="item.device_code"
/>
</el-select>
</template>
</el-table-column>
<el-table-column align="center" label="操作" width="170">
<template scope="scope">
<el-button
type="danger"
class="filter-item"
size="mini"
icon="el-icon-delete"
@click.native.prevent="deleteRow(scope.$index, form.floorPoint)"
/>
</template>
</el-table-column>
</el-table>
</div>
</el-card>
<el-card class="box-card" shadow="never">
<div slot="header" class="clearfix">
<span class="role-span">PLC读取字段</span>
</div>
<el-form
ref="form"
:inline="true"
:model="form"
:rules="rules"
size="small"
label-width="78px"
>
<el-table
v-loading="false"
:data="data1"
:max-height="550"
size="small"
style="width: 100%; margin-bottom: 15px"
>
<el-table-column prop="name" label="用途" />
<el-table-column prop="code" label="别名要求" />
<el-table-column prop="db" label="DB块">
<template slot-scope="scope">
<el-input
v-model="data1[scope.$index].db"
size="mini"
class="edit-input"
@input="finishReadEdit(data1[scope.$index])"
/>
</template>
</el-table-column>
<el-table-column prop="dbr_value">
<template slot="header">
<el-link
type="primary"
:underline="false"
@click.native="test_read1()"
>测试读
</el-link>
</template>
<template slot-scope="scope">
<el-input
v-model="data1[scope.$index].dbr_value"
size="mini"
class="edit-input"
/>
</template>
</el-table-column>
</el-table>
</el-form>
</el-card>
<el-card class="box-card" shadow="never">
<div slot="header" class="clearfix">
<span class="role-span">PLC写入字段</span>
</div>
<el-form
ref="form"
:inline="true"
:model="form"
:rules="rules"
size="small"
label-width="78px"
>
<el-table
v-loading="false"
:data="data2"
:max-height="550"
size="small"
style="width: 100%; margin-bottom: 15px"
>
<el-table-column prop="name" label="用途" />
<el-table-column prop="code" label="别名要求" />
<el-table-column prop="db" label="DB块">
<template slot-scope="scope">
<el-input
v-model="data2[scope.$index].db"
size="mini"
class="edit-input"
@input="finishWriteEdit(data2[scope.$index])"
/>
</template>
</el-table-column>
<el-table-column prop="dbr_value2">
<template slot="header">
<el-link
type="primary"
:underline="false"
@click.native="test_read2()"
>测试读
</el-link>
</template>
<template slot-scope="scope">
<el-input
v-model="data2[scope.$index].dbr_value"
size="mini"
class="edit-input"
/>
</template>
</el-table-column>
<el-table-column prop="dbw_value">
<template slot="header">
<el-link
type="primary"
:underline="false"
@click.native="test_write1()"
>测试写
</el-link>
</template>
<template slot-scope="scope">
<el-input
v-model="data2[scope.$index].dbw_value"
size="mini"
class="edit-input"
/>
</template>
</el-table-column>
</el-table>
</el-form>
</el-card>
<el-card class="box-card" shadow="never">
<div slot="header" class="clearfix">
<span class="role-span" />
<el-button
:loading="false"
icon="el-icon-check"
size="mini"
style="float: right; padding: 6px 9px"
type="primary"
@click="doSubmit"
>保存
</el-button>
</div>
</el-card>
</div>
</template>
<script>
import {
queryDriverConfig,
updateConfig,
testRead,
testwrite,
getStrategy
} from '@/api/acs/device/driverConfig'
import { selectOpcList } from '@/api/acs/device/opc'
import { selectPlcList } from '@/api/acs/device/opcPlc'
import { selectListByOpcID } from '@/api/acs/device/opcPlc'
import crud from '@/mixins/crud'
import deviceCrud from '@/api/acs/device/device'
import { findDeviceStrategyOption } from '@/api/acs/device/customPolicyType'
export default {
name: 'DoubleStationStacker',
mixins: [crud],
props: {
parentForm: {
type: Object,
required: true
}
},
data() {
return {
device_code: '',
device_id: '',
plc_id: '',
plc_code: '',
opc_id: '',
opc_code: '',
load_device_code: '',
configLoading: false,
dataOpcservers: [],
dataOpcPlcs: [],
deviceList: [],
options: [],
data1: [],
data2: [],
stackerNums: [
{
label: '单叉',
value: '1'
},
{
label: '双叉',
value: '2'
}
],
floorList: [
{
label: '一楼',
value: '1'
},
{
label: '二楼',
value: '2'
},
{
label: '三楼',
value: '3'
}
],
floorPriorityList: [
{
label: '1L->2L->3L',
value: '1,2,3'
},
{
label: '1L->3L->2L',
value: '1,3,2'
},
{
label: '2L->1L->3L',
value: '2,1,3'
},
{
label: '2L->3L->1L',
value: '2,3,1'
},
{
label: '3L->2L->1L',
value: '3,2,1'
},
{
label: '3L->1L->2L',
value: '3,1,2'
}
],
form: {
strategyValue: '',
backDeviceCodeList: [],
frontDeviceCodeList: [],
frontNoY: '',
backNoY: '',
address: '',
xDeviceCodeList: '',
stackerNum: '',
specialPutDevice: '',
specialGetDevice: '',
floorPoint: [],
floorPriority: null,
originPoint: ''
},
rules: {}
}
},
created() {
this.$nextTick(() => {
// 从父表单获取设备编码
this.device_id = this.$props.parentForm.device_id
this.device_code = this.$props.parentForm.device_code
queryDriverConfig(
this.device_id,
this.$props.parentForm.driver_code
).then((data) => {
// 给表单赋值,并且属性不能为空
if (data.form) {
const arr = Object.keys(data.form)
// 不为空
if (arr.length > 0) {
this.form = data.form
}
}
// 给表单赋值,并且属性不能为空
if (data.parentForm) {
const arr = Object.keys(data.parentForm)
// 不为空
if (arr.length > 0) {
this.opc_code = data.parentForm.opc_code
this.plc_code = data.parentForm.plc_code
}
}
this.data1 = data.rs
this.data2 = data.ws
this.sliceItem()
})
selectPlcList().then((data) => {
this.dataOpcPlcs = data
this.plc_id = this.$props.parentForm.opc_plc_id
})
selectOpcList().then((data) => {
this.dataOpcservers = data
this.opc_id = this.$props.parentForm.opc_server_id
})
deviceCrud.selectDeviceList().then((data) => {
this.deviceList = data
})
getStrategy().then((data) => {
this.options = data
})
})
},
methods: {
insertdtl() {
if (!Array.isArray(this.form.floorPoint)) {
this.$set(this.form, 'floorPoint', [])
}
this.form.floorPoint.push({ floor: '', inPoints: [], outPoints: [] })
},
deleteRow(index, rows) {
rows.splice(index, 1)
},
finishReadEdit(data) {
// 编辑的是code列,并且值包含mode
if (data.code.indexOf('mode') !== -1) {
debugger
const dbValue = data.db
// .之前的字符串
// const beforeStr = dbValue.match(/(\S*)\./)[1]
// .之后的字符串
const afterStr = dbValue.match(/\.(\S*)/)[1]
// 取最后数字
const endNumber = afterStr.substring(1)
// 最后为非数字
if (isNaN(parseInt(endNumber))) {
return
}
// for (const val in this.data1) {
// if (this.data1[val].code.indexOf('move') !== -1) {
// this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 1)
// }
// if (this.data1[val].code.indexOf('error') !== -1) {
// this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 5)
// }
// if (this.data1[val].code.indexOf('task') !== -1) {
// this.data1[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 7)
// }
// }
}
},
finishWriteEdit(data) {
// 编辑的是code列,并且值包含mode
if (data.code.indexOf('to_command') !== -1) {
const dbValue = data.db
// .之前的字符串
// const beforeStr = dbValue.match(/(\S*)\./)[1]
// .之后的字符串
const afterStr = dbValue.match(/\.(\S*)/)[1]
// 取最后数字
const endNumber = afterStr.substring(1)
// 最后为非数字
if (isNaN(parseInt(endNumber))) {
return
}
// for (const val in this.data2) {
// if (this.data2[val].code.indexOf('to_target') !== -1) {
// this.data2[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 2)
// }
// if (this.data2[val].code.indexOf('to_task') !== -1) {
// this.data2[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 6)
// }
// }
}
},
changeOpc(val) {
this.dataOpcservers.forEach((item) => {
if (item.opc_id === val) {
this.opc_code = item.opc_code
}
})
selectListByOpcID(val).then((data) => {
this.dataOpcPlcs = data
this.plc_id = ''
this.plc_code = ''
if (this.dataOpcPlcs && this.dataOpcPlcs.length > 0) {
this.plc_id = this.dataOpcPlcs[0].plc_id
this.plc_code = this.dataOpcPlcs[0].plc_code
}
this.sliceItem()
})
},
changePlc(val) {
this.dataOpcPlcs.forEach((item) => {
if (item.plc_id === val) {
this.plc_code = item.plc_code
this.sliceItem()
return
}
})
},
test_read1() {
testRead(this.data1, this.opc_id)
.then((data) => {
this.data1 = data
this.notify('操作成功!', 'success')
})
.catch((err) => {
console.log(err.response.data.message)
})
},
test_read2() {
testRead(this.data2, this.opc_id)
.then((data) => {
this.data2 = data
console.log(this.data2)
this.notify('操作成功!', 'success')
})
.catch((err) => {
console.log(err.response.data.message)
})
},
test_write1() {
testwrite(this.data2, this.opc_id)
.then((data) => {
this.notify('操作成功!', 'success')
})
.catch((err) => {
console.log(err.response.data.message)
})
},
doSubmit() {
this.$refs['form'].validate((valid) => {
if (valid) {
this.configLoading = true
// 根据驱动类型判断是否为路由设备
const parentForm = this.parentForm
parentForm.is_route = true
parentForm.plc_id = this.plc_id
parentForm.opc_id = this.opc_id
updateConfig(parentForm, this.form, this.data1, this.data2)
.then((res) => {
this.notify('保存成功', 'success')
this.configLoading = false
})
.catch((err) => {
this.configLoading = false
console.log(err.response.data.message)
})
}
})
},
sliceItem() {
// 拼接DB的Item值
this.data1.forEach((item) => {
const str = item.code
// 是否包含.
if (str.search('.') !== -1) {
// 截取最后一位
item.code =
this.opc_code +
'.' +
this.plc_code +
'.' +
this.device_code +
'.' +
str.slice(str.lastIndexOf('.') + 1)
} else {
item.code =
this.opc_code +
'.' +
this.plc_code +
'.' +
this.device_code +
'.' +
item.code
}
})
this.data2.forEach((item) => {
const str = item.code
// 是否包含.
if (str.search('.') !== -1) {
// 截取最后一位
item.code =
this.opc_code +
'.' +
this.plc_code +
'.' +
this.device_code +
'.' +
str.slice(str.lastIndexOf('.') + 1)
} else {
item.code =
this.opc_code +
'.' +
this.plc_code +
'.' +
this.device_code +
'.' +
item.code
}
})
}
}
}
</script>
<style scoped>
</style>

View File

@@ -237,10 +237,10 @@
<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-form-item :label="$t('monitor.click.request_flag')" prop="requireSuccess" label-width="120px">
<el-radio-group v-model="form.requireSuccess">
<el-radio-button :label=false> {{ $t('auto.common.false') }}</el-radio-button>
<el-radio-button :label=true>{{ $t('auto.common.true') }}</el-radio-button>
</el-radio-group>
</el-form-item>
</el-form>
@@ -249,6 +249,45 @@
<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="dialogFormVisible11" 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="requireSuccess" label-width="120px">
<el-radio-group v-model="form.requireSuccess">
<el-radio-button :label=false> {{ $t('auto.common.false') }}</el-radio-button>
<el-radio-button :label=true>{{ $t('auto.common.true') }}</el-radio-button>
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible11 = 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="dialogFormVisible12" 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="requireSuccess" label-width="120px">
<el-radio-group v-model="form.requireSuccess">
<el-radio-button :label=false> {{ $t('auto.common.false') }}</el-radio-button>
<el-radio-button :label=true>{{ $t('auto.common.true') }}</el-radio-button>
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible12 = false">{{ $t('auto.common.Cancel') }}</el-button>
<el-button type="primary" @click="dialogSave">{{ $t('auto.common.Confirm') }}</el-button>
</div>
</el-dialog>
</div>
</template>
@@ -256,13 +295,13 @@
import crudStage from '@/api/logicflow/stage'
import bgMonitor from '@/assets/images/bg_monitor.jpg'
import deviceCrud from '@/api/acs/device/device'
import { getDeviceByCodes } from '@/api/acs/device/deviceStageMonitor'
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 {LogicFlow} from '@logicflow/core'
import {registerCustomElement} from '@/views/system/logicflow/editor/components/node'
import i18n from '@/i18n'
import { selectStageList } from '@/api/acs/stage/stage'
import {selectStageList} from '@/api/acs/stage/stage'
let data = {}
let lf = ''
@@ -287,6 +326,8 @@ export default {
dialogFormVisible8: false,
dialogFormVisible9: false,
dialogFormVisible10: false,
dialogFormVisible11: false,
dialogFormVisible12: false,
Stages: [],
stage_code: 'stage_code',
stage_name: '二楼监控',
@@ -305,7 +346,8 @@ export default {
toCommand: null,
prohibitInWarehouse: false,
prohibitOutWarehouse: false,
stopReceiveTask: false
stopReceiveTask: false,
requireSuccess: false
},
allDeviceMsg: [],
msgTop: '200px',
@@ -358,10 +400,10 @@ export default {
})
lf.setTheme(
{
baseEdge: { strokeWidth: 1 },
baseNode: { strokeWidth: 1 },
nodeText: { overflowMode: 'autoWrap', lineHeight: 1.5 },
edgeText: { overflowMode: 'autoWrap', lineHeight: 1.5 }
baseEdge: {strokeWidth: 1},
baseNode: {strokeWidth: 1},
nodeText: {overflowMode: 'autoWrap', lineHeight: 1.5},
edgeText: {overflowMode: 'autoWrap', lineHeight: 1.5}
}
)
// 注册自定义元素
@@ -481,6 +523,10 @@ export default {
this.dialogFormVisible9 = true
} else if (clickObj.data.driver_type === 'conveyor_with_scanner_weight') {
this.dialogFormVisible10 = true
} else if (clickObj.data.driver_type === 'belt_conveyor') {
this.dialogFormVisible11 = true
} else if (clickObj.data.driver_type === 'box_subvolumes_conveyor') {
this.dialogFormVisible12 = true
} else {
this.dialogFormVisible = true
}
@@ -500,6 +546,7 @@ export default {
this.form.prohibitOutWarehouse = clickObj.data.prohibitOutWarehouse
this.form.stopReceiveTask = clickObj.data.stopReceiveTask
this.form.toCommand = null
this.form.requireSuccess = clickObj.data.requireSuccess
},
moveShow(nodeData) { // 点击之后显示出来的数据----只需要设备信息
let item = ''
@@ -523,8 +570,8 @@ export default {
tempDeviceName = item.data.in_device_name
} */
this.arr = [
{ name: i18n.t('monitor.click.equipment_number'), value: item.device_code },
{ name: i18n.t('monitor.click.device_name'), value: item.device_name }
{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) {
@@ -532,251 +579,254 @@ export default {
continue
}
if (val === 'message' && data.isError === true) {
const obj = { name: i18n.t('monitor.click.device_information'), value: data[val] }
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] }
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] }
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] }
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] }
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] }
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] }
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] }
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] }
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] }
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] }
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: i18n.t('monitor.click.pallet_type'), value: data[val] }
const obj = {name: i18n.t('monitor.click.pallet_type'), value: data[val]}
this.arr.push(obj)
} else if (val === 'barcode') {
const obj = { name: i18n.t('monitor.click.barcode'), value: data[val] }
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] }
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] }
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] }
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] }
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] }
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] }
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] }
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] }
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] }
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] }
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] }
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] }
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] }
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] }
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] }
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] }
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] }
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] }
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] }
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] }
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] }
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] }
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.post-station_photoelectric_signal'), value: data[val] }
const obj = {name: i18n.t('monitor.click.post-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] }
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] }
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] }
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] }
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] }
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] }
const obj = {name: i18n.t('monitor.click.task_number'), value: data[val]}
this.arr.push(obj)
} else if (val === 'last_task') {
const obj = { name: i18n.t('monitor.click.last_mission_number'), value: data[val] }
const obj = {name: i18n.t('monitor.click.last_mission_number'), value: data[val]}
this.arr.push(obj)
} else if (val === 'is_disable') {
const obj = { name: i18n.t('monitor.click.disable'), value: data[val] }
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] }
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] }
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] }
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] }
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] }
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] }
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] }
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] }
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] }
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] }
const obj = {name: i18n.t('monitor.click.request_success_flag'), value: data[val]}
this.arr.push(obj)
} else if (val === 'requireActionSucess') {
const obj = { name: i18n.t('monitor.click.request_success_flag'), value: data[val] }
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] }
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] }
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] }
const obj = {name: i18n.t('monitor.click.inventory_quantity'), value: data[val]}
this.arr.push(obj)
} else if (val === 'hand_barcode') {
const obj = { name: i18n.t('monitor.click.Complement_information'), value: data[val] }
const obj = {name: i18n.t('monitor.click.Complement_information'), value: data[val]}
this.arr.push(obj)
} else if (val === 'hand_barcode1') {
const obj = { name: i18n.t('monitor.click.the_subvolume_number'), value: data[val] }
const obj = {name: i18n.t('monitor.click.the_subvolume_number'), value: data[val]}
this.arr.push(obj)
} else if (val === 'x') {
const obj = { name: 'X', value: data[val] }
const obj = {name: 'X', value: data[val]}
this.arr.push(obj)
} else if (val === 'y') {
const obj = { name: 'Y', value: data[val] }
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] }
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] }
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] }
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] }
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] }
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] }
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] }
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] }
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] }
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] }
const obj = {name: i18n.t('monitor.click.task_number'), value: data[val]}
this.arr.push(obj)
} else if (val === 'command') {
const obj = { name: i18n.t('monitor.click.command'), value: data[val] }
const obj = {name: i18n.t('monitor.click.command'), value: data[val]}
this.arr.push(obj)
} else if (val === 'material_barcode') {
const obj = { name: i18n.t('monitor.click.the_subvolume_number'), value: data[val] }
const obj = {name: i18n.t('monitor.click.the_subvolume_number'), value: data[val]}
this.arr.push(obj)
} else if (val === 'material_code') {
const obj = {name: i18n.t('monitor.click.material_code'), value: data[val]}
this.arr.push(obj)
} else if (val === 'inst_message') {
const obj = { name: i18n.t('monitor.click.Current_command_information'), value: data[val] }
const obj = {name: i18n.t('monitor.click.Current_command_information'), value: data[val]}
this.arr.push(obj)
} else if (val === 'errors') {
const obj = { name: i18n.t('monitor.click.Core_error_identifier'), value: data[val] }
const obj = {name: i18n.t('monitor.click.Core_error_identifier'), value: data[val]}
this.arr.push(obj)
} else if (val === 'upload_scene_status') {
const obj = { name: i18n.t('monitor.click.Whether_to_push_the_scenario_waybill'), value: data[val] }
const obj = {name: i18n.t('monitor.click.Whether_to_push_the_scenario_waybill'), value: data[val]}
this.arr.push(obj)
} else if (val === 'procBusiness') {
const obj = { name: i18n.t('monitor.click.Whether_it_is_being_executed'), value: data[val] }
const obj = {name: i18n.t('monitor.click.Whether_it_is_being_executed'), value: data[val]}
this.arr.push(obj)
} else if (val === 'connection_status') {
const obj = { name: i18n.t('monitor.click.Connection_status'), value: data[val] }
const obj = {name: i18n.t('monitor.click.Connection_status'), value: data[val]}
this.arr.push(obj)
} else if (val === 'dispatchable_status') {
const obj = { name: i18n.t('monitor.click.Whether_the_order_can_be_accepted'), value: data[val] }
const obj = {name: i18n.t('monitor.click.Whether_the_order_can_be_accepted'), value: data[val]}
this.arr.push(obj)
} else if (val === 'current_map_invalid') {
const obj = { name: i18n.t('monitor.click.Whether_or_not_in_the_scene'), value: data[val] }
const obj = {name: i18n.t('monitor.click.Whether_or_not_in_the_scene'), value: data[val]}
this.arr.push(obj)
} else if (val === 'disconnect') {
const obj = {
@@ -785,31 +835,34 @@ export default {
}
this.arr.push(obj)
} else if (val === 'low_battery') {
const obj = { name: i18n.t('monitor.click.The_state_of_the_robots_battery_level'), value: data[val] }
const obj = {name: i18n.t('monitor.click.The_state_of_the_robots_battery_level'), value: data[val]}
this.arr.push(obj)
} else if (val === 'suspended') {
const obj = { name: i18n.t('monitor.click.The_status_of_the_waybill'), value: data[val] }
const obj = {name: i18n.t('monitor.click.The_status_of_the_waybill'), value: data[val]}
this.arr.push(obj)
} else if (val === 'unconfirmed_reloc') {
const obj = { name: i18n.t('monitor.click.positioning_confirmation'), value: data[val] }
const obj = {name: i18n.t('monitor.click.positioning_confirmation'), value: data[val]}
this.arr.push(obj)
} else if (val === 'unlock') {
const obj = { name: i18n.t('monitor.click.control'), value: data[val] }
const obj = {name: i18n.t('monitor.click.control'), value: data[val]}
this.arr.push(obj)
} else if (val === 'qty') {
const obj = { name: i18n.t('monitor.click.number_of_air_shafts'), value: data[val] }
const obj = {name: i18n.t('monitor.click.number_of_air_shafts'), value: data[val]}
this.arr.push(obj)
} else if (val === 'type') {
const obj = { name: i18n.t('opc.table_title.type'), value: data[val] }
} else if (val === 'container_type') {
const obj = {name: i18n.t('monitor.click.container_type'), value: data[val]}
this.arr.push(obj)
} else if (val === 'agv_task_type') {
const obj = { name: i18n.t('monitor.click.agv_task_type'), value: data[val] }
const obj = {name: i18n.t('monitor.click.agv_task_type'), value: data[val]}
this.arr.push(obj)
} else if (val === 'vehicle_code2') {
const obj = { name: i18n.t('monitor.click.vehicle_code2'), value: data[val] }
const obj = {name: i18n.t('monitor.click.vehicle_code2'), value: data[val]}
this.arr.push(obj)
} else if (val === 'volume_code') {
const obj = { name: i18n.t('monitor.click.volume_code'), value: data[val] }
const obj = {name: i18n.t('monitor.click.volume_code'), value: data[val]}
this.arr.push(obj)
} else if (val === 'unExecutedMessage') {
const obj = {name: i18n.t('monitor.click.unExecutedMessage'), value: data[val]}
this.arr.push(obj)
}
}
@@ -818,7 +871,7 @@ export default {
},
initStatus() { // 初始化所有节点的设备信息通过节点id对应设备编号
let resion = {}
resion = lf.getGraphData().nodes.map(item => ({ id: item.id, device_code: item.properties.device }))
resion = lf.getGraphData().nodes.map(item => ({id: item.id, device_code: item.properties.device}))
getDeviceByCodes(resion).then(res => {
console.log(res)
this.allDeviceMsg = res // 拿到所有节点的设备数据
@@ -844,7 +897,7 @@ export default {
}
}
// 设置动态实时显示设备信息
const { nodes } = lf.getSelectElements() // 获取选中的节点
const {nodes} = lf.getSelectElements() // 获取选中的节点
// console.log(nodes)
if (nodes.length === 1) { // 因为是定时器,没有选中则不用实时更新显示数据
this.moveShow(nodes[0]) // 监控模式下不可能托选,因此就只有一个数据
@@ -853,7 +906,7 @@ export default {
},
dialogSave() {
deviceCrud.changeDeviceStatus(this.form).then(() => {
this.$notify({ title: '操作成功', message: '', type: 'success' })
this.$notify({title: '操作成功', message: '', type: 'success'})
this.dialogFormVisible = false
this.dialogFormVisible3 = false
this.dialogFormVisible4 = false
@@ -863,6 +916,8 @@ export default {
this.dialogFormVisible8 = false
this.dialogFormVisible9 = false
this.dialogFormVisible10 = false
this.dialogFormVisible11 = false
this.dialogFormVisible12 = false
this.initStageData()
}).catch(err => {
this.dialogFormVisible = false
@@ -873,6 +928,8 @@ export default {
this.dialogFormVisible8 = false
this.dialogFormVisible9 = false
this.dialogFormVisible10 = false
this.dialogFormVisible11 = false
this.dialogFormVisible12 = false
console.log(err.response.data.message)
})
},