| | |
| | | |
| | | <head> |
| | | <meta charset="UTF-8"> |
| | | <title>堆垛机设备</title> |
| | | <title>RGV设备</title> |
| | | <link rel="stylesheet" href="../../static/wcs/css/element.css"> |
| | | <script type="text/javascript" src="../../static/wcs/js/jquery/jquery-3.3.1.min.js"></script> |
| | | <script type="text/javascript" src="../../static/wcs/js/common.js"></script> |
| | |
| | | </el-table-column> |
| | | <el-table-column property="walkPos" label="设备状态"> |
| | | </el-table-column> |
| | | <el-table-column property="pakMk" label="锁定状态"> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | |
| | |
| | | <!-- <el-form-item label="源站/源库位">--> |
| | | <!-- <el-input v-model="formParam.sourceStaNo" placeholder="源站/源库位"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <el-form-item label="源排"> |
| | | <el-input v-model="formParam.sourceRow" placeholder="排"></el-input> |
| | | <el-form-item label="起始站"> |
| | | <el-input v-model="formParam.sourceRow" placeholder="起始站"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="源列"> |
| | | <el-input v-model="formParam.sourceBay" placeholder="列"></el-input> |
| | | <el-form-item label="目标站"> |
| | | <el-input v-model="formParam.sourceBay" placeholder="目标站"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="源层"> |
| | | <el-input v-model="formParam.sourceLev" placeholder="层"></el-input> |
| | | <el-form-item label="启动"> |
| | | <el-button @click="initiate" type="warning">执行任务</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | <el-form :model="formParam" label-position="top" :inline="true" class="demo-form-inline"> |
| | | <!-- <el-form-item label="目标站/目标库位">--> |
| | | <!-- <el-input v-model="formParam.staNo" placeholder="目标站/目标库位"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <el-form-item label="目标排"> |
| | | <el-input v-model="formParam.row" placeholder="排"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="目标列"> |
| | | <el-input v-model="formParam.bay" placeholder="列"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="目标层"> |
| | | <el-input v-model="formParam.lev" placeholder="层"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <el-form :model="formParam" label-position="top" :inline="true" class="demo-form-inline"> |
| | | <el-form-item label="托盘码"> |
| | | <el-input v-model="formParam.barcode" placeholder="条码"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="托盘类型"> |
| | | <el-input v-model="formParam.barcodeType" placeholder="类型"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="空托盘"> |
| | | <el-select v-model="formParam.emptyContainer" placeholder="是否为空托盘"> |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | | </el-form> |
| | | <el-form label-position="top" :inline="true" class="demo-form-inline"> |
| | | <el-form-item label=""> |
| | | <el-checkbox @change="updateEnableInOut('in')" v-model="enableIn">可入</el-checkbox> |
| | | </el-form-item> |
| | | <el-form-item label=""> |
| | | <el-checkbox @change="updateEnableInOut('out')" v-model="enableOut">可出</el-checkbox> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div> |
| | | <el-button @click="requestOperate('put')" type="primary">入库</el-button> |
| | | <el-button @click="requestOperate('take')" type="primary">出库</el-button> |
| | | <el-button @click="requestOperate('stockMove')" type="primary">库位转移</el-button> |
| | | <el-button @click="requestOperate('siteMove')" type="primary">站到站</el-button> |
| | | <el-button @click="requestOperate('taskComplete')" type="primary">任务完成</el-button> |
| | | <el-button @click="requestOperate('clearCommand')" type="primary">清除命令</el-button> |
| | | <el-button @click="requestOperate('reset')" type="primary">复位</el-button> |
| | | <br/> |
| | | <br/> |
| | | <el-button @click="requestOperate('auto')" type="warning">联机</el-button> |
| | | <el-button @click="requestOperate('semiAutomatic')" type="warning">半自动</el-button> |
| | | <el-button @click="requestOperate('hand')" type="warning">手动</el-button> |
| | | <el-button @click="requestOperate('onlineWrk4')" type="warning">恢复联机任务</el-button> |
| | | <el-button @click="requestOperate('onlineWrk3')" type="warning">清除联机任务</el-button> |
| | | <el-button @click="requestOperate('onlineWrk1')" type="warning">申请完成任务</el-button> |
| | | <br/> |
| | | <br/> |
| | | <el-button @click="requestOperate('onlineWrk2')" type="warning">申请取消任务</el-button> |
| | | <el-button v-if="demo === 'N' " @click="demos('true')" type="warning">演示</el-button> |
| | | <el-button v-if="demo === 'Y' " @click="demos('false')" type="warning">取消演示</el-button> |
| | | </div> |
| | | <div style="margin-top: 5px" v-if="demo === 'Y'"> |
| | | <el-button @click="staTova(2,1)" type="warning">输送-置换1</el-button> |
| | | <el-button @click="staTova(2,3)" type="warning">输送-置换2</el-button> |
| | | <el-button @click="staTova(2,5)" type="warning">输送-置换3</el-button> |
| | | <el-button @click="staTova(2,7)" type="warning">输送-置换4</el-button> |
| | | </div> |
| | | <div style="margin-top: 5px" v-if="demo === 'Y'"> |
| | | <el-button @click="staTova(2,4)" type="warning">输送-灌装1</el-button> |
| | | <el-button @click="staTova(2,6)" type="warning">输送-灌装2</el-button> |
| | | <el-button @click="staTova(2,8)" type="warning">输送-灌装3</el-button> |
| | | </div> |
| | | <div style="margin-top: 5px" v-if="demo === 'Y'"> |
| | | <el-button @click="staTova(1,10)" type="warning">置换1-放货</el-button> |
| | | <el-button @click="staTova(2,10)" type="warning">置换2-放货</el-button> |
| | | <el-button @click="staTova(3,10)" type="warning">置换3-放货</el-button> |
| | | <el-button @click="staTova(4,10)" type="warning">置换4-放货</el-button> |
| | | </div> |
| | | </div> |
| | | </el-card> |
| | |
| | | </div> |
| | | <div v-else> |
| | | <el-descriptions :title="currentTitle" direction="vertical" :column="4" border> |
| | | <el-descriptions-item label="堆垛机">{{ tableData[currentIndex].crnNo }} |
| | | <el-descriptions-item label="RGV">{{ tableData[currentIndex].rgvNo }} |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="工作号"> |
| | | {{ tableData[currentIndex].workNo }} |
| | | {{ tableData[currentIndex].workNo1 }} |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="模式"> |
| | | <el-tag>{{ tableData[currentIndex].statusType }}</el-tag> |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="任务状态"> |
| | | <div v-if="tableData[currentIndex].wrkStatus == 0"> |
| | | <el-tag>{{ tableData[currentIndex].wrkStatus$ }}</el-tag> |
| | | </div> |
| | | <div v-else> |
| | | <el-tag type="success">{{ tableData[currentIndex].wrkStatus$ }}</el-tag> |
| | | </div> |
| | | |
| | | <el-tag>{{ tableData[currentIndex].status}}</el-tag> |
| | | |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="设备状态"> |
| | | <el-tag>{{ tableData[currentIndex].deviceStatus }}</el-tag> |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="有物"> |
| | | <el-tag>{{ tableData[currentIndex].loading }}</el-tag> |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="列">{{ tableData[currentIndex].bay }} |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="层">{{ tableData[currentIndex].lev }} |
| | | <el-tag>{{ tableData[currentIndex].walkPos }}</el-tag> |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="故障代码">{{ tableData[currentIndex].warnCode }} |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="故障描述">{{ tableData[currentIndex].lev }} |
| | | <el-descriptions-item label="故障描述">{{ tableData[currentIndex].alarm }} |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="源站">{{ tableData[currentIndex].sourceStaNo }} |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="目标站">{{ tableData[currentIndex].staNo }} |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="源库位">{{ tableData[currentIndex].sourceLocNo }} |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="目标库位">{{ tableData[currentIndex].locNo }} |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="货叉定位">{{ tableData[currentIndex].forkOffset }} |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="载货台定位">{{ tableData[currentIndex].liftPos }} |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="走行在定位">{{ tableData[currentIndex].walkPos }} |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="走行速度(m/min)">{{ tableData[currentIndex].xspeed }} |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="升降速度(m/min)">{{ tableData[currentIndex].yspeed }} |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="叉牙速度(m/min)">{{ tableData[currentIndex].zspeed }} |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="走行距离(Km)">{{ tableData[currentIndex].xdistance }} |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="升降距离(Km)">{{ tableData[currentIndex].ydistance }} |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="走行时长(H)">{{ tableData[currentIndex].xduration }} |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="升降时长(H)">{{ tableData[currentIndex].yduration }} |
| | | </el-descriptions-item> |
| | | <!-- <el-descriptions-item label="源站">{{ tableData[currentIndex].staNo }}--> |
| | | <!-- </el-descriptions-item>--> |
| | | <!-- <el-descriptions-item label="目标站">{{ tableData[currentIndex].sourceStaNo }}--> |
| | | <!-- </el-descriptions-item>--> |
| | | </el-descriptions> |
| | | |
| | | </div> |
| | | </div> |
| | | </el-card> |
| | |
| | | currentTitle: "未选择设备", |
| | | currentIndex: null, |
| | | formParam: { |
| | | crnNo: null, |
| | | rgvNo: null, |
| | | sourceStaNo: null, |
| | | sourceRow: 1, |
| | | sourceBay: 0, |
| | |
| | | value:'0', |
| | | label:'否' |
| | | } |
| | | ] |
| | | ], |
| | | demo: 'X' |
| | | }, |
| | | created() { |
| | | this.init() |
| | |
| | | |
| | | }, |
| | | methods: { |
| | | staTova(sta,end){ |
| | | let that = this |
| | | that.$confirm('此操作存在风险,是否继续','提示',{ |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(()=>{ |
| | | $.ajax({ |
| | | url: baseUrl + "/rgv/rgvDemoTask", |
| | | headers: { |
| | | 'token': localStorage.getItem('token') |
| | | }, |
| | | data:{ |
| | | rgvNo : this.formParam.rgvNo, |
| | | sta : sta, |
| | | end : end |
| | | }, |
| | | method: 'Get', |
| | | success: function (res) { |
| | | if (res.code == 200) { |
| | | that.$message({ |
| | | message: res.msg, |
| | | type: 'success' |
| | | }); |
| | | } else { |
| | | that.$message({ |
| | | message: res.msg, |
| | | type: 'error' |
| | | }); |
| | | } |
| | | } |
| | | }); |
| | | }) |
| | | }, |
| | | init() { |
| | | this.getTableData() |
| | | |
| | | setInterval(() => { |
| | | this.getTableData() |
| | | this.demoStatus() |
| | | }, 1000) |
| | | }, |
| | | handleRowClick(row, col, event) { |
| | | const index = this.tableData.indexOf(row) |
| | | this.currentRow = row; |
| | | this.currentIndex = index |
| | | this.currentTitle = row.crnNo + "号堆垛机" |
| | | this.formParam.crnNo = row.crnNo |
| | | this.currentTitle = row.rgvNo + "号RGV" |
| | | this.formParam.rgvNo = row.rgvNo |
| | | this.enableIn = row.inEnable == "Y" ? true : false |
| | | this.enableOut = row.outEnable == "Y" ? true : false |
| | | }, |
| | |
| | | } |
| | | }); |
| | | }, |
| | | demoStatus() { |
| | | let that = this; |
| | | $.ajax({ |
| | | url: baseUrl + "/rgv/demo/status", |
| | | data:{ |
| | | rgvNo : this.formParam.rgvNo |
| | | }, |
| | | headers: { |
| | | 'token': localStorage.getItem('token') |
| | | }, |
| | | contentType: 'application/json;charset=UTF-8', |
| | | method: 'get', |
| | | success: function (res) { |
| | | that.demo = res.msg |
| | | |
| | | } |
| | | }); |
| | | }, |
| | | initiate(){ |
| | | let that = this |
| | | that.$confirm('此操作存在风险,是否继续','提示',{ |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(()=>{ |
| | | $.ajax({ |
| | | url: baseUrl + "/rgv/operator/put", |
| | | headers: { |
| | | 'token': localStorage.getItem('token') |
| | | }, |
| | | data: this.formParam, |
| | | method: 'POST', |
| | | success: function (res) { |
| | | if (res.code == 200) { |
| | | that.$message({ |
| | | message: res.msg, |
| | | type: 'success' |
| | | }); |
| | | } else { |
| | | that.$message({ |
| | | message: res.msg, |
| | | type: 'error' |
| | | }); |
| | | } |
| | | } |
| | | }); |
| | | }) |
| | | }, |
| | | demos(method){ |
| | | let that = this |
| | | that.$confirm('此操作存在风险,是否继续','提示',{ |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(()=>{ |
| | | $.ajax({ |
| | | url: baseUrl + "/rgv/demo/status/" + method, |
| | | headers: { |
| | | 'token': localStorage.getItem('token') |
| | | }, |
| | | data:{ |
| | | rgvNo : this.formParam.rgvNo |
| | | }, |
| | | method: 'Get', |
| | | success: function (res) { |
| | | if (res.code == 200) { |
| | | that.$message({ |
| | | message: res.msg, |
| | | type: 'success' |
| | | }); |
| | | } else { |
| | | that.$message({ |
| | | message: res.msg, |
| | | type: 'error' |
| | | }); |
| | | } |
| | | } |
| | | }); |
| | | }) |
| | | }, |
| | | requestOperate(method) { |
| | | let that = this |
| | | that.$confirm('此操作存在风险,是否继续','提示',{ |
| | |
| | | type: 'warning' |
| | | }).then(()=>{ |
| | | $.ajax({ |
| | | url: baseUrl + "/crn/operator/" + method, |
| | | url: baseUrl + "/rgv/operator/" + method, |
| | | headers: { |
| | | 'token': localStorage.getItem('token') |
| | | }, |
| | |
| | | if (type == "in") { |
| | | param = { |
| | | inEnable: this.enableIn ? "Y" : "N", |
| | | crnNo: this.formParam.crnNo |
| | | rgvNo: this.formParam.rgvNo |
| | | } |
| | | } else { |
| | | param = { |
| | | outEnable: this.enableOut ? "Y" : "N", |
| | | crnNo: this.formParam.crnNo |
| | | rgvNo: this.formParam.rgvNo |
| | | } |
| | | } |
| | | |