|
|
@ -468,7 +468,7 @@ |
|
|
</div> |
|
|
</div> |
|
|
</el-dialog> |
|
|
</el-dialog> |
|
|
|
|
|
|
|
|
<!-- Call栈板模态框 --> |
|
|
|
|
|
|
|
|
<!-- Call栈板模态框 - rqrq --> |
|
|
<el-dialog |
|
|
<el-dialog |
|
|
title="调用空托盘" |
|
|
title="调用空托盘" |
|
|
:visible.sync="callPalletModalVisible" |
|
|
:visible.sync="callPalletModalVisible" |
|
|
@ -480,34 +480,57 @@ |
|
|
:append-to-body="true" |
|
|
:append-to-body="true" |
|
|
> |
|
|
> |
|
|
<div class="call-modal-content"> |
|
|
<div class="call-modal-content"> |
|
|
<!-- 起始站点选择 --> |
|
|
|
|
|
|
|
|
<!-- 选择区域 - rqrq --> |
|
|
<div class="input-group"> |
|
|
<div class="input-group"> |
|
|
<label class="input-label">起始站点</label> |
|
|
|
|
|
|
|
|
<label class="input-label">选择区域</label> |
|
|
<el-select |
|
|
<el-select |
|
|
v-model="selectedCallStartStation" |
|
|
|
|
|
placeholder="请选择起始站点" |
|
|
|
|
|
|
|
|
v-model="selectedCallArea" |
|
|
|
|
|
placeholder="请选择区域" |
|
|
style="width: 100%;" |
|
|
style="width: 100%;" |
|
|
@change="handleCallStartStationChange" |
|
|
|
|
|
|
|
|
@change="handleCallAreaChange" |
|
|
> |
|
|
> |
|
|
<el-option |
|
|
<el-option |
|
|
v-for="station in callStartStationOptions" |
|
|
|
|
|
|
|
|
v-for="area in callAreaOptions" |
|
|
|
|
|
:key="area.areaId" |
|
|
|
|
|
:label="area.areaDesc" |
|
|
|
|
|
:value="area.areaId" |
|
|
|
|
|
/> |
|
|
|
|
|
</el-select> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<!-- 选择站点 - rqrq --> |
|
|
|
|
|
<div class="input-group"> |
|
|
|
|
|
<label class="input-label">选择站点</label> |
|
|
|
|
|
<el-select |
|
|
|
|
|
v-model="selectedCallStation" |
|
|
|
|
|
placeholder="请选择站点" |
|
|
|
|
|
style="width: 100%;" |
|
|
|
|
|
:disabled="!selectedCallArea" |
|
|
|
|
|
> |
|
|
|
|
|
<el-option |
|
|
|
|
|
v-for="station in callStationOptions" |
|
|
:key="station.stationCode" |
|
|
:key="station.stationCode" |
|
|
:label="`${station.stationCode} - ${station.stationName}`" |
|
|
|
|
|
|
|
|
:label="`${station.stationId} (${station.stationCode})`" |
|
|
:value="station.stationCode" |
|
|
:value="station.stationCode" |
|
|
/> |
|
|
/> |
|
|
</el-select> |
|
|
</el-select> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<!-- 目标站点输入 --> |
|
|
|
|
|
|
|
|
<!-- 选择栈板类型 - rqrq --> |
|
|
<div class="input-group"> |
|
|
<div class="input-group"> |
|
|
<label class="input-label">目标站点</label> |
|
|
|
|
|
<el-input |
|
|
|
|
|
ref="callTargetStationInput" |
|
|
|
|
|
v-model="selectedCallTargetStation" |
|
|
|
|
|
placeholder="请扫描或输入目标站点" |
|
|
|
|
|
clearable |
|
|
|
|
|
|
|
|
<label class="input-label">栈板类型</label> |
|
|
|
|
|
<el-select |
|
|
|
|
|
v-model="selectedCallPalletType" |
|
|
|
|
|
placeholder="请选择栈板类型" |
|
|
style="width: 100%;" |
|
|
style="width: 100%;" |
|
|
/> |
|
|
|
|
|
|
|
|
> |
|
|
|
|
|
<el-option |
|
|
|
|
|
v-for="type in callPalletTypeOptions" |
|
|
|
|
|
:key="type.palletType" |
|
|
|
|
|
:label="`${type.palletType} - ${type.typeDesc}`" |
|
|
|
|
|
:value="type.palletType" |
|
|
|
|
|
/> |
|
|
|
|
|
</el-select> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
@ -540,9 +563,15 @@ import { |
|
|
getPalletTypeList, |
|
|
getPalletTypeList, |
|
|
getPalletTypeAreas, |
|
|
getPalletTypeAreas, |
|
|
updatePalletTypeAndAutoSort, |
|
|
updatePalletTypeAndAutoSort, |
|
|
getAvailablePositionsForLayer |
|
|
|
|
|
|
|
|
getAvailablePositionsForLayer, |
|
|
|
|
|
callEmptyPalletToStation // 新增调用空托盘API - rqrq |
|
|
} from '../../../api/automatedWarehouse/palletPacking' |
|
|
} from '../../../api/automatedWarehouse/palletPacking' |
|
|
|
|
|
|
|
|
|
|
|
import { |
|
|
|
|
|
getAreaOptionsForChange, |
|
|
|
|
|
getStationsByArea |
|
|
|
|
|
} from '../../../api/automatedWarehouse/palletChangeStation' |
|
|
|
|
|
|
|
|
export default { |
|
|
export default { |
|
|
data() { |
|
|
data() { |
|
|
return { |
|
|
return { |
|
|
@ -596,12 +625,14 @@ export default { |
|
|
currentPalletStation: '', |
|
|
currentPalletStation: '', |
|
|
selectedTargetArea: '', // 选择的目标区域 |
|
|
selectedTargetArea: '', // 选择的目标区域 |
|
|
|
|
|
|
|
|
// Call栈板模态框 |
|
|
|
|
|
|
|
|
// Call栈板模态框 - rqrq |
|
|
callPalletModalVisible: false, |
|
|
callPalletModalVisible: false, |
|
|
callStartStationOptions: [], // 起始站点选项(statusDb=1,有货) |
|
|
|
|
|
callTargetStationOptions: [], // 目标站点选项(statusDb=0,空闲) |
|
|
|
|
|
selectedCallStartStation: '', |
|
|
|
|
|
selectedCallTargetStation: '', |
|
|
|
|
|
|
|
|
callAreaOptions: [], // 可选区域列表 - rqrq |
|
|
|
|
|
callStationOptions: [], // 可选站点列表 - rqrq |
|
|
|
|
|
callPalletTypeOptions: [], // 栈板类型列表 - rqrq |
|
|
|
|
|
selectedCallArea: '', // 选中的区域 - rqrq |
|
|
|
|
|
selectedCallStation: '', // 选中的站点 - rqrq |
|
|
|
|
|
selectedCallPalletType: '', // 选中的栈板类型 - rqrq |
|
|
|
|
|
|
|
|
// 修改位置模态框 |
|
|
// 修改位置模态框 |
|
|
editPositionModalVisible: false, |
|
|
editPositionModalVisible: false, |
|
|
@ -890,35 +921,67 @@ export default { |
|
|
}); |
|
|
}); |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
// Call栈板 - 调用空托盘 |
|
|
|
|
|
|
|
|
// Call栈板 - 调用空托盘 - rqrq |
|
|
handleCallPallet() { |
|
|
handleCallPallet() { |
|
|
this.callPalletModalVisible = true; |
|
|
this.callPalletModalVisible = true; |
|
|
this.selectedCallStartStation = ''; |
|
|
|
|
|
this.selectedCallTargetStation = ''; |
|
|
|
|
|
|
|
|
this.selectedCallArea = ''; |
|
|
|
|
|
this.selectedCallStation = ''; |
|
|
|
|
|
this.selectedCallPalletType = ''; |
|
|
|
|
|
this.callStationOptions = []; |
|
|
|
|
|
|
|
|
|
|
|
// 获取可选区域列表(choose_able='Y')- rqrq |
|
|
|
|
|
getAreaOptionsForChange({ |
|
|
|
|
|
site: this.site |
|
|
|
|
|
}).then(({ data }) => { |
|
|
|
|
|
if (data && data.code === 0) { |
|
|
|
|
|
this.callAreaOptions = data.rows || []; |
|
|
|
|
|
} else { |
|
|
|
|
|
this.$message.error(data.msg || '获取区域列表失败'); |
|
|
|
|
|
} |
|
|
|
|
|
}).catch(error => { |
|
|
|
|
|
console.error('获取区域列表失败:', error); |
|
|
|
|
|
this.$message.error('获取区域列表失败'); |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
// 获取AGV站点列表,分别过滤起始站点和目标站点 |
|
|
|
|
|
// 获取起始站点(有货的正式站点) |
|
|
|
|
|
getAvailableAgvStations({ statusDb: 1 }).then(({ data }) => { |
|
|
|
|
|
|
|
|
// 获取栈板类型列表(active='Y')- rqrq |
|
|
|
|
|
getPalletTypeList({ |
|
|
|
|
|
site: this.site, |
|
|
|
|
|
palletFamily: '', // 不过滤大分类,显示所有栈板类型 - rqrq |
|
|
|
|
|
active: 'Y' |
|
|
|
|
|
}).then(({ data }) => { |
|
|
if (data && data.code === 0) { |
|
|
if (data && data.code === 0) { |
|
|
this.callStartStationOptions = data.stations || []; |
|
|
|
|
|
|
|
|
this.callPalletTypeOptions = data.rows || []; |
|
|
} else { |
|
|
} else { |
|
|
this.$message.error(data.msg || '获取起始站点列表失败'); |
|
|
|
|
|
|
|
|
this.$message.error(data.msg || '获取栈板类型列表失败'); |
|
|
} |
|
|
} |
|
|
}).catch(error => { |
|
|
}).catch(error => { |
|
|
console.error('获取起始站点列表失败:', error); |
|
|
|
|
|
this.$message.error('获取起始站点列表失败'); |
|
|
|
|
|
|
|
|
console.error('获取栈板类型列表失败:', error); |
|
|
|
|
|
this.$message.error('获取栈板类型列表失败'); |
|
|
}); |
|
|
}); |
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
// 区域选择change事件 - rqrq |
|
|
|
|
|
handleCallAreaChange() { |
|
|
|
|
|
this.selectedCallStation = ''; |
|
|
|
|
|
this.callStationOptions = []; |
|
|
|
|
|
|
|
|
|
|
|
if (!this.selectedCallArea) { |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// 获取目标站点(空闲的正式站点) |
|
|
|
|
|
getAvailableAgvStations({ statusDb: 0 }).then(({ data }) => { |
|
|
|
|
|
|
|
|
// 根据区域获取可用站点列表 - rqrq |
|
|
|
|
|
getStationsByArea({ |
|
|
|
|
|
site: this.site, |
|
|
|
|
|
areaId: this.selectedCallArea |
|
|
|
|
|
}).then(({ data }) => { |
|
|
if (data && data.code === 0) { |
|
|
if (data && data.code === 0) { |
|
|
this.callTargetStationOptions = data.stations || []; |
|
|
|
|
|
|
|
|
this.callStationOptions = data.rows || []; |
|
|
} else { |
|
|
} else { |
|
|
this.$message.error(data.msg || '获取目标站点列表失败'); |
|
|
|
|
|
|
|
|
this.$message.error(data.msg || '获取站点列表失败'); |
|
|
} |
|
|
} |
|
|
}).catch(error => { |
|
|
}).catch(error => { |
|
|
console.error('获取目标站点列表失败:', error); |
|
|
|
|
|
this.$message.error('获取目标站点列表失败'); |
|
|
|
|
|
|
|
|
console.error('获取站点列表失败:', error); |
|
|
|
|
|
this.$message.error('获取站点列表失败'); |
|
|
}); |
|
|
}); |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
@ -1531,53 +1594,64 @@ export default { |
|
|
this.transportAreaOptions = []; |
|
|
this.transportAreaOptions = []; |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
// 确认Call栈板 |
|
|
|
|
|
|
|
|
// 确认Call栈板 - rqrq |
|
|
confirmCallPallet() { |
|
|
confirmCallPallet() { |
|
|
if (!this.selectedCallStartStation) { |
|
|
|
|
|
this.$message.error('请选择起始站点'); |
|
|
|
|
|
|
|
|
// 参数校验 - rqrq |
|
|
|
|
|
if (!this.selectedCallArea) { |
|
|
|
|
|
this.$message.error('请选择区域'); |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
if (!this.selectedCallTargetStation) { |
|
|
|
|
|
this.$message.error('请选择目标站点'); |
|
|
|
|
|
|
|
|
if (!this.selectedCallStation) { |
|
|
|
|
|
this.$message.error('请选择站点'); |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 前端验证:两个站点不能一样 |
|
|
|
|
|
if (this.selectedCallStartStation === this.selectedCallTargetStation) { |
|
|
|
|
|
this.$message.error('起始站点和目标站点不能相同'); |
|
|
|
|
|
|
|
|
if (!this.selectedCallPalletType) { |
|
|
|
|
|
this.$message.error('请选择栈板类型'); |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 设置loading状态,防止重复点击 |
|
|
|
|
|
this.callPalletLoading = true; |
|
|
|
|
|
|
|
|
|
|
|
callPalletToStation({ |
|
|
|
|
|
site: this.site, |
|
|
|
|
|
startStation: this.selectedCallStartStation, |
|
|
|
|
|
targetStation: this.selectedCallTargetStation |
|
|
|
|
|
}).then(({ data }) => { |
|
|
|
|
|
if (data.code === 0) { |
|
|
|
|
|
this.$message.success('空托盘调用任务创建成功'); |
|
|
|
|
|
this.closeCallPalletModal(); |
|
|
|
|
|
} else { |
|
|
|
|
|
this.$message.error(data.msg || '调用空托盘失败'); |
|
|
|
|
|
} |
|
|
|
|
|
}).catch(error => { |
|
|
|
|
|
console.error('调用空托盘失败:', error); |
|
|
|
|
|
this.$message.error('异常:'+error); |
|
|
|
|
|
}).finally(() => { |
|
|
|
|
|
// 无论成功或失败,都要恢复按钮状态 |
|
|
|
|
|
this.callPalletLoading = false; |
|
|
|
|
|
|
|
|
// 确认对话框 - rqrq |
|
|
|
|
|
this.$confirm('确定调用空托盘吗?', '提示', { |
|
|
|
|
|
confirmButtonText: '确定', |
|
|
|
|
|
cancelButtonText: '取消', |
|
|
|
|
|
type: 'warning' |
|
|
|
|
|
}).then(() => { |
|
|
|
|
|
// 设置loading状态,防止重复点击 - rqrq |
|
|
|
|
|
this.callPalletLoading = true; |
|
|
|
|
|
|
|
|
|
|
|
// 调用后端API - rqrq |
|
|
|
|
|
callEmptyPalletToStation({ |
|
|
|
|
|
site: this.site, |
|
|
|
|
|
stationCode: this.selectedCallStation, |
|
|
|
|
|
palletType: this.selectedCallPalletType |
|
|
|
|
|
}).then(({ data }) => { |
|
|
|
|
|
if (data && data.code === 0) { |
|
|
|
|
|
this.$message.success('空托盘调用任务创建成功'); |
|
|
|
|
|
this.closeCallPalletModal(); |
|
|
|
|
|
} else { |
|
|
|
|
|
this.$message.error(data.msg || '调用空托盘失败'); |
|
|
|
|
|
} |
|
|
|
|
|
}).catch(error => { |
|
|
|
|
|
console.error('调用空托盘失败:', error); |
|
|
|
|
|
this.$message.error('异常:'+error); |
|
|
|
|
|
}).finally(() => { |
|
|
|
|
|
// 无论成功或失败,都要恢复按钮状态 - rqrq |
|
|
|
|
|
this.callPalletLoading = false; |
|
|
|
|
|
}); |
|
|
|
|
|
}).catch(() => { |
|
|
|
|
|
// 用户取消 - rqrq |
|
|
}); |
|
|
}); |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
// 关闭Call栈板模态框 |
|
|
|
|
|
|
|
|
// 关闭Call栈板模态框 - rqrq |
|
|
closeCallPalletModal() { |
|
|
closeCallPalletModal() { |
|
|
this.callPalletModalVisible = false; |
|
|
this.callPalletModalVisible = false; |
|
|
this.selectedCallStartStation = ''; |
|
|
|
|
|
this.selectedCallTargetStation = ''; |
|
|
|
|
|
this.callStartStationOptions = []; |
|
|
|
|
|
this.callTargetStationOptions = []; |
|
|
|
|
|
|
|
|
this.selectedCallArea = ''; |
|
|
|
|
|
this.selectedCallStation = ''; |
|
|
|
|
|
this.selectedCallPalletType = ''; |
|
|
|
|
|
this.callAreaOptions = []; |
|
|
|
|
|
this.callStationOptions = []; |
|
|
|
|
|
this.callPalletTypeOptions = []; |
|
|
}, |
|
|
}, |
|
|
// 显示浏览明细弹窗 - rqrq |
|
|
// 显示浏览明细弹窗 - rqrq |
|
|
showDetailModal(){ |
|
|
showDetailModal(){ |
|
|
|