This commit is contained in:
xhf 2025-03-26 15:42:12 +08:00
commit aeef310b06
10 changed files with 165 additions and 222 deletions

View File

@ -90,7 +90,7 @@ const formLoading = ref(false) // 表单的加载中1修改时的数据加
const title = ref('新建') // form const title = ref('新建') // form
const formData = ref({ const formData = ref({
robotModelId: undefined, //id robotModelId: undefined, //id
robotNo: undefined, //AGV robotNo: undefined, //
macAddress: undefined, //mac macAddress: undefined, //mac
floorAreaJson: [], floorAreaJson: [],
autoCharge: undefined autoCharge: undefined
@ -135,7 +135,7 @@ const floorAreaChange = (value) => {
const formRules = reactive({ const formRules = reactive({
robotModelId: [{ required: true, message: '车辆类型不能为空', trigger: 'change' }], robotModelId: [{ required: true, message: '车辆类型不能为空', trigger: 'change' }],
robotNo: [{ required: true, message: 'AGV编号不能为空', trigger: 'change' }], robotNo: [{ required: true, message: '车辆编号不能为空', trigger: 'change' }],
macAddress: [{ required: true, message: 'Mac地址不能为空', trigger: 'change' }], macAddress: [{ required: true, message: 'Mac地址不能为空', trigger: 'change' }],
autoCharge: [{ required: true, message: '自动充电电量不能为空', trigger: 'change' }] autoCharge: [{ required: true, message: '自动充电电量不能为空', trigger: 'change' }]
}) })
@ -244,7 +244,7 @@ const takeRemoteMethod = async (query, item) => {
const resetForm = () => { const resetForm = () => {
formData.value = { formData.value = {
robotModelId: undefined, //id robotModelId: undefined, //id
robotNo: undefined, //AGV robotNo: undefined, //
macAddress: undefined, //mac macAddress: undefined, //mac
floorAreaJson: [], floorAreaJson: [],
autoCharge: undefined autoCharge: undefined

View File

@ -85,7 +85,7 @@ const formLoading = ref(false) // 表单的加载中1修改时的数据加
const title = ref('新建') // form const title = ref('新建') // form
const formData = ref({ const formData = ref({
deviceType: undefined, // deviceType: undefined, //
deviceNo: undefined, //AGV deviceNo: undefined, //
macAddress: undefined, //mac macAddress: undefined, //mac
mapImageUrl: undefined, // mapImageUrl: undefined, //
pictureConfig: undefined, // 12 3 pictureConfig: undefined, // 12 3
@ -217,7 +217,7 @@ const takeRemoteMethod = async (query, item) => {
const resetForm = () => { const resetForm = () => {
formData.value = { formData.value = {
deviceType: undefined, //id deviceType: undefined, //id
deviceNo: undefined, //AGV deviceNo: undefined, //
macAddress: undefined, //mac macAddress: undefined, //mac
mapImageUrl: undefined, // mapImageUrl: undefined, //
pictureConfig: undefined, // 12 3 pictureConfig: undefined, // 12 3

View File

@ -17,10 +17,10 @@
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="AGV编号" prop="robotNo"> <el-form-item label="车辆编号" prop="robotNo">
<el-input <el-input
v-model="queryParams.robotNo" v-model="queryParams.robotNo"
placeholder="请输入AGV编号" placeholder="请输入车辆编号"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-240px"
@ -67,7 +67,7 @@
:header-cell-style="{ backgroundColor: '#EBF1FF', padding: '13px 0' }" :header-cell-style="{ backgroundColor: '#EBF1FF', padding: '13px 0' }"
> >
<el-table-column label="序号" align="center" type="index" width="80" /> <el-table-column label="序号" align="center" type="index" width="80" />
<el-table-column label="AGV编号" align="center" prop="robotNo" /> <el-table-column label="车辆编号" align="center" prop="robotNo" />
<el-table-column label="告警等级1-4" align="center" prop="warnLevel" /> <el-table-column label="告警等级1-4" align="center" prop="warnLevel" />
<el-table-column label="告警/异常ID" align="center" prop="warnCode" /> <el-table-column label="告警/异常ID" align="center" prop="warnCode" />
<el-table-column label="告警/异常信息" align="center" prop="warnMsg" /> <el-table-column label="告警/异常信息" align="center" prop="warnMsg" />

View File

@ -148,10 +148,10 @@
:inline="true" :inline="true"
label-width="68px" label-width="68px"
> >
<el-form-item label="任务号" prop="taskNo"> <el-form-item label="任务号" prop="taskNo">
<el-input <el-input
v-model="taskLogParams.taskNo" v-model="taskLogParams.taskNo"
placeholder="请输入任务号" placeholder="请输入任务号"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-240px"
@ -243,7 +243,7 @@
v-loading="loading" v-loading="loading"
> >
<el-table-column label="序号" type="index" width="80" align="center" /> <el-table-column label="序号" type="index" width="80" align="center" />
<el-table-column prop="taskNo" label="任务号" align="center" /> <el-table-column prop="taskNo" label="任务号" align="center" />
<el-table-column prop="taskType" label="任务类型" align="center" width="120"> <el-table-column prop="taskType" label="任务类型" align="center" width="120">
<template #default="scope"> <template #default="scope">
<el-text v-if="scope.row.taskType == 1">取放货</el-text> <el-text v-if="scope.row.taskType == 1">取放货</el-text>
@ -345,7 +345,7 @@ const getCarLogList = async () => {
const taskLogParams = reactive({ const taskLogParams = reactive({
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
taskNo: null, // taskNo: null, //
taskType: null, // taskType: null, //
taskStatus: null, // taskStatus: null, //
startTime: null, // startTime: null, //

View File

@ -26,12 +26,12 @@
</el-table> </el-table>
<!-- 分页 --> <!-- 分页 -->
<div class="pagination"> <div class="pagination">
<el-pagination <Pagination
size="small"
background
layout="prev, pager, next"
:total="total"
class="mt-4" class="mt-4"
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getWareHouseList"
/> />
</div> </div>
</Dialog> </Dialog>

View File

@ -25,12 +25,12 @@
</el-table> </el-table>
<!-- 分页 --> <!-- 分页 -->
<div class="pagination"> <div class="pagination">
<el-pagination <Pagination
size="small"
background
layout="prev, pager, next"
:total="total"
class="mt-4" class="mt-4"
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getLineLibraryList"
/> />
</div> </div>
</Dialog> </Dialog>

View File

@ -177,7 +177,7 @@ const formData = ref({
releaseList: [], // releaseList: [], //
takeId: undefined, //id takeId: undefined, //id
takeList: [], // takeList: [], //
robotNo: undefined, //AGV robotNo: undefined, //
needLock: 0, //(0:1:) needLock: 0, //(0:1:)
electricity: undefined //() electricity: undefined //()
} }
@ -359,7 +359,7 @@ const resetForm = () => {
releaseList: [], // releaseList: [], //
takeId: undefined, //id takeId: undefined, //id
takeList: [], // takeList: [], //
robotNo: undefined, //AGV robotNo: undefined, //
needLock: 0, //(0:1:) needLock: 0, //(0:1:)
electricity: undefined //() electricity: undefined //()
} }

View File

@ -1268,7 +1268,7 @@ const state = reactive({
macAddress: '', // mac macAddress: '', // mac
markProperty: '', // markProperty: '', //
originalNode: '', // originalNode: '', //
robotNo: '' //AGV robotNo: '' //
}, // }, //
mapMarkCarList: [], // mapMarkCarList: [], //
popoverVisible: false, // popoverVisible: false, //

View File

@ -28,11 +28,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<div <div>
v-if="
formData.taskDetailList[0].taskType !== 2 && formData.taskDetailList[0].taskType !== 3
"
>
<el-row :gutter="24"> <el-row :gutter="24">
<el-col :span="12"> <el-col :span="12">
<el-form-item required label="是否拼接任务" prop="montageTask" label-width="146"> <el-form-item required label="是否拼接任务" prop="montageTask" label-width="146">
@ -49,6 +45,7 @@
<el-col :span="12" v-if="formData.montageTask === 1"> <el-col :span="12" v-if="formData.montageTask === 1">
<el-form-item required label="任务拼接数量" prop="montageNumber" label-width="146"> <el-form-item required label="任务拼接数量" prop="montageNumber" label-width="146">
<el-input-number <el-input-number
:disabled="montageNumberDisable"
class="!w-220px" class="!w-220px"
v-model="formData.montageNumber" v-model="formData.montageNumber"
:min="1" :min="1"
@ -58,13 +55,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<div <div>
v-if="
formData.taskDetailList[0].taskType === 1 ||
formData.taskDetailList[0].taskType === 5 ||
formData.taskDetailList[0].taskType === 6
"
>
<el-row :gutter="24"> <el-row :gutter="24">
<el-col :span="12"> <el-col :span="12">
<el-form-item <el-form-item
@ -77,7 +68,7 @@
v-model="formData.doMoveAll" v-model="formData.doMoveAll"
:active-value="1" :active-value="1"
:inactive-value="0" :inactive-value="0"
@change="doMoveAllChange" :before-change="doMoveAllChange.bind()"
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -155,7 +146,6 @@
class="task-item" class="task-item"
> >
<div class="index-logo">{{ index + 1 }}</div> <div class="index-logo">{{ index + 1 }}</div>
<el-row :gutter="24"> <el-row :gutter="24">
<el-col :span="24"> <el-col :span="24">
<el-form-item <el-form-item
@ -170,14 +160,12 @@
placeholder="请选择" placeholder="请选择"
@change="taskTypeChange(detailItem, index)" @change="taskTypeChange(detailItem, index)"
> >
<el-option label="取放货" :value="1" /> <el-option
<el-option label="停车" :value="2" /> v-for="item in detailItem.taskTypeList"
<el-option label="充电" :value="3" /> :key="item.value"
<el-option label="移动" :value="4" /> :label="item.label"
<el-option label="仅取货" :value="5" /> :value="item.value"
<el-option label="仅放货" :value="6" /> />
<!-- <el-option label="扫描码" :value="7" />
<el-option label="检测托盘类型" :value="8" /> -->
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -306,6 +294,7 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item label="指定车辆"> <el-form-item label="指定车辆">
<el-select <el-select
clearable
v-model="detailItem.robotNo" v-model="detailItem.robotNo"
placeholder="请选择车辆" placeholder="请选择车辆"
@change="chooseCarErrorMsg" @change="chooseCarErrorMsg"
@ -758,9 +747,17 @@ const formData = ref({
releaseList: [], // releaseList: [], //
takeId: undefined, //id takeId: undefined, //id
takeList: [], // takeList: [], //
robotNo: undefined, //AGV robotNo: undefined, //
needLock: 0, //(0:1:) needLock: 0, //(0:1:)
electricity: undefined //() electricity: undefined, //()
taskTypeList: [
{ label: '取放货', value: 1 },
{ label: '停车', value: 2 },
{ label: '充电', value: 3 },
{ label: '移动', value: 4 },
{ label: '仅取货', value: 5 },
{ label: '仅放货', value: 6 }
]
} }
], // ], //
skuInfo: undefined, // skuInfo: undefined, //
@ -793,9 +790,17 @@ const resetFormData = () => {
releaseList: [], // releaseList: [], //
takeId: undefined, //id takeId: undefined, //id
takeList: [], // takeList: [], //
robotNo: undefined, //AGV robotNo: undefined, //
needLock: 0, //(0:1:) needLock: 0, //(0:1:)
electricity: undefined //() electricity: undefined, //()
taskTypeList: [
{ label: '取放货', value: 1 },
{ label: '停车', value: 2 },
{ label: '充电', value: 3 },
{ label: '移动', value: 4 },
{ label: '仅取货', value: 5 },
{ label: '仅放货', value: 6 }
]
} }
], // ], //
skuInfo: undefined, // skuInfo: undefined, //
@ -866,204 +871,142 @@ const robotNoChange = (e, detailItem) => {
} }
// //
const montageNumberDisable = computed(() =>
formData.value.taskDetailList.some((item) => {
return item.taskType == 2 || item.taskType == 3
})
)
const taskTypeChange = (item, index) => { const taskTypeChange = (item, index) => {
item.releaseType = 1 item.releaseType = 1
item.takeType = 1 item.takeType = 1
item.releaseId = undefined
item.releaseList = []
item.takeId = undefined
item.takeList = []
item.robotNo = undefined
item.needLock = 0 item.needLock = 0
item.releaseId = undefined
item.takeId = undefined
item.robotNo = undefined
item.electricity = undefined item.electricity = undefined
item.otherMsg = undefined item.otherMsg = undefined
item.releaseList = []
item.takeList = []
let lastItem = formData.value.taskDetailList[index - 1] let nextItem = formData.value.taskDetailList[index + 1]
// let nextItem = formData.value.taskDetailList[index + 1] if (!nextItem) return
if (index === 0) { if (item.taskType === 1) {
formData.value.doCycle = 0 nextItem.taskTypeList = [
formData.value.cycleNumber = 0 { label: '取放货', value: 1 },
{ label: '移动', value: 4 },
if (item.taskType === 2) { { label: '仅取货', value: 5 }
formData.value.montageTask = 0 ]
formData.value.montageNumber = 1 } else if (item.taskType === 2) {
formData.value.taskDetailList = formData.value.taskDetailList.slice(0, 1) formData.value.taskDetailList = formData.value.taskDetailList.slice(0, index + 1)
message.warning('任务1为停车不可拼接任务') formData.value.montageNumber = formData.value.taskDetailList.length
} } else if (item.taskType === 3) {
if (item.taskType === 3) { formData.value.taskDetailList = formData.value.taskDetailList.slice(0, index + 1)
formData.value.montageTask = 0 formData.value.montageNumber = formData.value.taskDetailList.length
formData.value.montageNumber = 1 } else if (item.taskType === 4) {
formData.value.taskDetailList = formData.value.taskDetailList.slice(0, 1) nextItem.taskTypeList = [
message.warning('任务1为充电不可拼接任务') { label: '取放货', value: 1 },
} { label: '移动', value: 4 },
} else { { label: '仅取货', value: 5 }
// ]
if (lastItem.taskType === 1) { } else if (item.taskType === 5) {
if (item.taskType === 2) { nextItem.taskTypeList = [
message.warning('取放货后不可连接停车') { label: '移动', value: 4 },
item.taskType = undefined { label: '仅放货', value: 6 }
return ]
} } else if (item.taskType === 6) {
if (item.taskType === 3) { nextItem.taskTypeList = [
message.warning('取放货后不可连接充电') { label: '取放货', value: 1 },
item.taskType = undefined { label: '移动', value: 4 },
return { label: '仅取货', value: 5 }
} ]
if (item.taskType === 6) {
message.warning('取放货后不可连接仅放货')
item.taskType = undefined
return
}
if (item.taskType === 7) {
message.warning('取放货后不可连接扫描码')
item.taskType = undefined
return
}
if (item.taskType === 8) {
message.warning('取放货后不可连接检测托盘类型')
item.taskType = undefined
return
}
} else if (lastItem.taskType === 2) {
//
} else if (lastItem.taskType === 3) {
//
} else if (lastItem.taskType === 4) {
if (item.taskType === 2) {
message.warning('移动后不可连接停车')
item.taskType = undefined
return
}
if (item.taskType === 3) {
message.warning('移动后不可连接充电')
item.taskType = undefined
return
}
if (item.taskType === 6) {
message.warning('移动后不可连接仅放货')
item.taskType = undefined
return
}
} else if (lastItem.taskType === 5) {
if (item.taskType === 1) {
message.warning('仅取货后不可连接取放货')
item.taskType = undefined
return
}
if (item.taskType === 2) {
message.warning('仅取货后不可连接停车')
item.taskType = undefined
return
}
if (item.taskType === 3) {
message.warning('仅取货后不可连接充电')
item.taskType = undefined
return
}
if (item.taskType === 5) {
message.warning('仅取货后不可连接仅取货')
item.taskType = undefined
return
}
if (item.taskType === 7) {
message.warning('仅取货后不可连接扫描码')
item.taskType = undefined
return
}
if (item.taskType === 8) {
message.warning('仅取货后不可连接检测托盘类型')
item.taskType = undefined
return
}
} else if (lastItem.taskType === 6) {
if (item.taskType === 2) {
message.warning('仅放货后不可连接停车')
item.taskType = undefined
return
}
if (item.taskType === 3) {
message.warning('仅放货后不可连接充电')
item.taskType = undefined
return
}
if (item.taskType === 6) {
message.warning('仅放货后不可连接仅放货')
item.taskType = undefined
return
}
if (item.taskType === 7) {
message.warning('仅放货后不可连接扫描码')
item.taskType = undefined
return
}
} else if (lastItem.taskType === 7) {
if (item.taskType === 2) {
message.warning('扫描码后不可连接停车')
item.taskType = undefined
return
}
if (item.taskType === 3) {
message.warning('扫描码后不可连接充电')
item.taskType = undefined
return
}
if (item.taskType === 6) {
message.warning('扫描码后不可连接仅放货')
item.taskType = undefined
return
}
if (item.taskType === 7) {
message.warning('扫描码后不可连接扫描码')
item.taskType = undefined
return
}
} else if (lastItem.taskType === 8) {
if (item.taskType === 2) {
message.warning('检测托盘类型后不可连接停车')
item.taskType = undefined
return
}
if (item.taskType === 3) {
message.warning('检测托盘类型后不可连接充电')
item.taskType = undefined
return
}
if (item.taskType === 6) {
message.warning('检测托盘类型后不可连接仅放货')
item.taskType = undefined
return
}
}
} }
} }
// //
const doMoveAllChange = (e) => { const doMoveAllChange = (e) => {
if (e === 1) { return new Promise((resolve, reject) => {
formData.value.taskDetailList.forEach((item) => { if (formData.value.doMoveAll === 1) {
item.taskType = 1 resolve(true)
}) } else {
} try {
ElMessageBox.confirm('开启搬空所选线库/区域,任务类型只能选择取放货,是否切换?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(async () => {
resolve(true)
formData.value.taskDetailList = formData.value.taskDetailList.filter((item) => {
return item.taskType === 1
})
formData.value.montageNumber = formData.value.taskDetailList.length //
})
.catch(() => {
ElMessage({
type: 'info',
message: '取消成功'
})
reject(false)
})
} catch (err) {
reject(false)
}
}
})
// if (e === 1) {
// formData.value.taskDetailList.forEach((item) => {
// item.taskType = 1
// })
// }
} }
// //
const montageNumberChange = (currentValue: number, oldValue: number) => { const montageNumberChange = (currentValue: number, oldValue: number) => {
if (currentValue > oldValue) { if (currentValue > oldValue) {
// //
let oldItem = formData.value.taskDetailList[oldValue - 1]
let addLength = currentValue - formData.value.taskDetailList.length let addLength = currentValue - formData.value.taskDetailList.length
let taskTypeList
if (oldItem.taskType === 1) {
taskTypeList = [
{ label: '取放货', value: 1 },
{ label: '移动', value: 4 },
{ label: '仅取货', value: 5 }
]
} else if (oldItem.taskType === 4) {
taskTypeList = [
{ label: '取放货', value: 1 },
{ label: '移动', value: 4 },
{ label: '仅取货', value: 5 }
]
} else if (oldItem.taskType === 5) {
taskTypeList = [
{ label: '移动', value: 4 },
{ label: '仅放货', value: 6 }
]
} else if (oldItem.taskType === 6) {
taskTypeList = [
{ label: '取放货', value: 1 },
{ label: '移动', value: 4 },
{ label: '仅取货', value: 5 }
]
}
for (let index = 0; index < addLength; index++) { for (let index = 0; index < addLength; index++) {
formData.value.taskDetailList.push({ formData.value.taskDetailList.push({
taskType: 1, //12 345678 taskType: undefined, //12 345678
releaseType: 1, // 12线 3 releaseType: 1, // 12线 3
takeType: 1, //12线 3 takeType: 1, //12线 3
releaseId: undefined, //id releaseId: undefined, //id
releaseList: [], // releaseList: [], //
takeId: undefined, //id takeId: undefined, //id
takeList: [], // takeList: [], //
robotNo: undefined, //AGV robotNo: undefined, //
needLock: 0, //(0:1:) needLock: 0, //(0:1:)
electricity: undefined //() electricity: undefined, //()
taskTypeList: taskTypeList
}) })
} }
} else { } else {
@ -1088,7 +1031,7 @@ const doCycleChange = () => {
resolve(true) resolve(true)
} else { } else {
try { try {
ElMessageBox.confirm('开启循环任务任务类型只能选择取放货,是否切换?', '提示', { ElMessageBox.confirm('开启循环任务任务类型只能选择取放货,是否切换?', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'

View File

@ -290,7 +290,7 @@ const cancelTask = async (mainItem, item) => {
// //
const finishTask = async (mainItem, item) => { const finishTask = async (mainItem, item) => {
try { try {
await message.delConfirm('请确认是否取消所有任务?') await message.delConfirm('请确认是否人工完成任务?')
await MapTaskAPi.updateTask({ await MapTaskAPi.updateTask({
id: mainItem.id, id: mainItem.id,
priority: mainItem.priority, priority: mainItem.priority,