Files
entityControl_mobile/pagesDispatch/detailDispatch.vue

409 lines
12 KiB
Vue
Raw Permalink Normal View History

2026-03-06 16:50:46 +08:00
<template>
<view class="container">
<view class="topBox">
<!-- <view>
<span>任务编号</span>
<span>111223334455555</span>
</view>
<view>
<span>任务描述</span>
<span>样品入库</span>
</view>
<view>
<span>物料编码</span>
<span>112222323</span>
</view>
<view>
<span>作业数量</span>
<span>4</span>
</view>
<view>
<span>起始位置</span>
<span>A1111111</span>
</view>
<view>
<span>目标位置</span>
<span>G222222</span>
</view>
<view>
<span>创建时间</span>
<span>2025-07-01 11:11:22</span>
</view>
<view>
<span>启用联动</span>
</view> -->
<uv-form labelPosition="left" :model="taskDetail" ref="form" labelWidth="120">
<uv-form-item label="任务编号" borderBottom >
<uv-input v-model="taskDetail.taskNo" border="none">
</uv-input>
</uv-form-item>
<uv-form-item label="任务描述" borderBottom >
<uv-input v-model="taskDetail.taskDtl" border="none">
</uv-input>
</uv-form-item>
<uv-form-item label="物料编码" borderBottom >
<uv-input v-model="taskDetail.mid" border="none">
</uv-input>
</uv-form-item>
<!-- <uv-form-item label="作业数量" borderBottom >
<uv-input v-model="taskDetail.num" border="none">
</uv-input>
</uv-form-item> -->
<uv-form-item label="起始位置" borderBottom >
<uv-input v-model="taskDetail.sourceName" border="none">
</uv-input>
</uv-form-item>
<uv-form-item label="目标位置" borderBottom >
<uv-input v-model="taskDetail.targetName" border="none">
</uv-input>
</uv-form-item>
<uv-form-item label="创建时间" >
<uv-input v-model="taskDetail.createTime" border="none">
</uv-input>
</uv-form-item>
</uv-form>
</view>
<view class="lineBox"></view>
<view class="statusBox">
<view class="titleBox">运行状态</view>
<view class="statusShowBox">
<view v-for="(item, index) in taskTips" :key="index" class="everyLine">{{ item }}</view>
<!-- <view class="everyLine">发送物资移库出入台指令成功</view>
<view class="everyLine">发送物资移库出入台指令成功</view>
<view class="everyLine">发送物资移库出入台指令成功</view>
<view>发送物资移库出入台指令成功</view>
<view>发送物资移库出入台指令成功</view>
<view>发送物资移库出入台指令成功</view>
<view>发送物资移库出入台指令成功</view>
<view>发送物资移库出入台指令成功</view>
<view>发送物资移库出入台指令成功</view>
<view>发送物资移库出入台指令成功</view>
<view>发送物资移库出入台指令成功</view>
<view>发送物资移库出入台指令成功</view>
<view>发送物资移库出入台指令成功</view>
<view>发送物资移库出入台指令成功</view> -->
</view>
</view>
<view class="btn">
<!-- :disabled="endTask" -->
<view class="everyBtn"><uv-button type="primary" shape="circle" text="执行任务" class="mainBtn" @click="startTask" :disabled="endTask"></uv-button></view>
<!-- <view class="everyBtn"><uv-button type="error" :plain="true" shape="circle" text="取消任务" @click="submit" :disabled="endTask"></uv-button></view> -->
<view class="everyBtn"><uv-button type="error" :plain="true" shape="circle" text="删除任务" @click="delTaskFun" ></uv-button></view>
<!-- :disabled="endTask" -->
</view>
<uv-modal ref="modal" title="提示" cancelText="取消" showCancelButton content='确定要删除吗?' @confirm="confirmDel"></uv-modal>
</view>
</template>
<script >
// import {executeTask,agvStatus,taskDetailF,wcsTask,wcsStatus} from "@/api/dispatch"
import {executeTask,agvStatus,wcsTask,wcsStatus,outGoods,taskDetailF,delTask} from "@/api/dispatch"
export default{
data(){
return{
taskDetail:{
taskNo:"",
taskDtl:"",
mid:"",
num:null,
sourceName:"",
targetName:"",
createTime:"",
taskType:"",
id:null
},
taskStatus:false, //任务状态
endTask:false,
taskTips:[],
wcs_TaskID:-1
}
},
onLoad(options){
// console.log(11111)
if(options){
// console.log(options)
this.taskDetailFun(options.id)
}
// console.log(options)
},
methods:{
//任务详情
taskDetailFun(id){
taskDetailF(id).then(res => {
// console.log(1111)
if(res.code==200){
this.taskDetail = res.data
if(this.taskDetail.taskStatus==2 || this.taskDetail.taskStatus==1){
this.endTask = true
}
}
// console.log(res)
})
},
//执行任务
startTask(){
if(this.taskStatus){
uni.showToast({
title: '任务执行中,请勿重复执行',
icon: 'error',
mask: true
})
return
}
if(this.taskDetail.taskType=='0'){ //上架
this.in_storage()
}else if(this.taskDetail.taskType=='1'){ //下架
this.out_storage()
}
// if(!confirm("确定执行调度任务?")){
// return
// }
},
async in_storage(){
this.taskStatus = true
// console.log(2222)
var first = this.taskDetail.targetName.substr(0,1);
var aindex = this.taskDetail.targetName.substr(5,1);
let requestId = ""
if(first == "A"){
var owner = "wms";
var type = 0;
var priority = 1;
// var sourceName = startLoc;
var agvTargetName = "V01-010101"; //履带的位置叫V01-010101也是叉车要放货的位置页面上输入的起始位置V01-230101指的是叉车取货的开始位置
if(aindex == '5' || aindex == '6')
{
agvTargetName = "V01-090101";
}
// 调用AGV执行接口
// const agvObj = {"taskNo":this.taskDetail.taskNo,"owner":owner, "type":type, "priority":priority, "sourceName":this.taskDetail.sourceName, "targetName":agvTargetName}
const agvObj = {"id":this.taskDetail.id,"targetName":agvTargetName,"materialStatus":1}
const agvResult = await executeTask(agvObj)
// console.log(1111111)
// console.log(agvResult)
// return
//调用AGV成功
// agvResult.code==200
if(agvResult.code==200){
requestId = agvResult.data.requestId
this.taskTips.push("发送物资移库出入台指令成功")
var flag2 = false;
var ishow = false;
if(this.taskDetail.targetName == "A01-040903" || this.taskDetail.targetName == "A01-043204"){
}else{
const that = this
var timId2 = setInterval(function(){
if(flag2) return;
flag2 = true;
//获取AGV执行任务的状态
agvStatus({"requestId": requestId,"status":"TAKE_DOWN_COMPLETED"}).then(res => {
flag2 = false;
if(res.code==200 && res.data !=201){
clearInterval(timId2);
that.taskTips.push("AGV放货至出入台完成")
var Materialstatus = 1;
if(that.taskDetail.mid == "" || that.taskDetail.mid == "0" || that.taskDetail.mid == 0)
{
Materialstatus = 0;
}
// this.taskTips.push("WCS入库指令发送成功")
// 向WCS发送入库指令可能后端自动调用
wcsTask({"taskNo":that.taskDetail.taskNo,"materialStatus":Materialstatus,"Location":that.taskDetail.targetName,"mid":that.taskDetail.mid,"num":that.taskDetail.num}).then(res=>{
if(res.code==200){
that.wcs_TaskID = res.taskId;
that.taskTips.push("WCS入库指令发送成功")
}else{
that.taskTips.push("WCS入库指令发送失败!")
}
})
}else{
if(!ishow)
{
that.taskTips.push("等待AGV指令执行完成......")
ishow = true;
}
}
})
},5000)
}
var flag3 = false;
var wcs_finish = false;
const that = this
var timId3 = setInterval(function(){
// console.log(11111111)
// console.log(that.wcs_TaskID)
if(!flag3){
flag3 = true;
if(!wcs_finish){
wcsStatus({"TaskID": that.wcs_TaskID}).then(res=>{
flag3 = false;
if(res.code==200 && res.msg=="200"){
clearInterval(timId3);
wcs_finish = true;
that.taskTips.push("立库物资上架完成")
//后端修改的任务状态,所以不调接口,直接提示任务完成
that.taskTips.push("作业任务完成!")
that.taskStatus = false;
that.endTask = true
}
})
}
}
},5000)
}
// const agvResult = await taskList({pageNum: 1,pageSize: 10})
// console.log(11111)
// console.log(agvResult)
}else if(first == "B"){
//1、给AGV发指令
//2、检测AGV执行结果
}
},
//下架
out_storage(){
this.taskStatus = true
//1、调用WCS发送下架指令
var first = this.taskDetail.sourceName.substr(0,1);
let requestId = ""
if(first == "A"){
var Materialstatus = 1;
if(this.taskDetail.mid == "" || this.taskDetail.mid == "0" || this.taskDetail.mid == 0)
{
Materialstatus = 0;
}
//调立库(后端调立库、调叉车)
executeTask({"id":this.taskDetail.id,"targetName":this.taskDetail.targetName,"materialStatus":Materialstatus}).then(res=>{
if(res.code==200){
// this.wcs_TaskID = res.TaskID;
requestId = res.data.requestId
this.taskTips.push("向WCS发送物资出库指令成功")
this.taskTips.push("发送AGV取货指令成功")
//调AGV
// var sourceName = "V01-010101";
// const agvObj = {"id":this.taskDetail.id}
// executeTask(agvObj).then(res=>{
// if(res.code==200){
// requestId = res.requestId
// this.taskTips.push("发送AGV取货指令成功")
// //agvLinkWcs
// }
// })
}else{
uni.showToast({
title: '任务执行中,操作失败',
icon: 'error',
mask: true
})
this.taskStatus = false;
return
}
})
//定时查询 叉车 执行状态
let flag3 = false;
var agv_finish = false;
const that = this
let timId3 = setInterval(function(){
if(!flag3){
flag3 = true;
if(!agv_finish){
// END_ARRIVE
agvStatus({"requestId": requestId,"status":"TAKE_DOWN_COMPLETED"}).then(res=>{
flag3 = false;
if(res.code == 200 && res.data != 201){
clearInterval(timId3);
agv_finish = true;
that.taskTips.push("物资移库完成")
that.taskTips.push("作业任务完成")
that.taskStatus = false;
that.endTask = true
that.$forceUpdate();
}
})
}
}
},8000)
}else{
uni.showToast({
title: '起始位置有误',
icon: 'error',
mask: true
})
}
},
//删除任务
delTaskFun(){
// this.taskDetail
this.$refs.modal.open();
},
confirmDel(){
delTask(this.taskDetail.id).then(res=>{
if(res.code==200){
uni.showToast({
title: '操作成功',
icon: 'success',
mask: true
})
uni.navigateTo({
url: '/pagesDispatch/dispatchList',
})
}
})
}
}
}
</script>
<style scoped lang="scss">
.container{
// height: calc(100vh - var(--window-top));
height: 100vh;
.topBox{
padding:0 40rpx;
height: 40%;
}
// background-color: #ededed;
.lineBox{
background-color: #ededed;
height: 40rpx;
margin-top: 40rpx;
margin-bottom: 20rpx;
}
.statusBox{
height: 42%;
padding:0 20rpx;
.titleBox{
// padding-left: 20rpx;
margin-bottom: 20rpx;
// font-size: 28rpx;
font-weight: bold;
}
.statusShowBox{
// background-color: #ededed;
height: 80%;
border-radius: 20rpx;
border:2rpx solid rgb(214, 215, 217);
overflow: auto;
.everyLine{
line-height: 40rpx;
}
}
}
.btn{
display: flex;
justify-content: space-around;
.everyBtn{
width: 30%;
}
}
}
</style>