<add>[important]添加箱式线任务的查询功能

This commit is contained in:
葛林强 2024-06-15 14:59:54 +08:00
parent 08a2f6b046
commit ee5526e31e
7 changed files with 440 additions and 1 deletions

8
src/axios/convey.js Normal file
View File

@ -0,0 +1,8 @@
import axios from '@/axios/base/base.axios';
export default {
// 分页查询箱式线任务
getConveyTaskWithPage(req) {
return axios.post('/api/wcs/conveyTask/queryConveyTaskWithPage', req)
}
}

View File

@ -0,0 +1,32 @@
// 箱式线任务状态
export const conveyTaskStatusEnum = {
create: {
value: 0,
label: '任务创建',
color: 'info'
},
moved: {
value: 1,
label: '已经移栽',
color: 'warning'
},
arrive: {
value: 2,
label: '已到达',
color: 'success'
}
}
export function formatterConveyTaskStatusEnum(value) {
switch (parseInt(value)){
case conveyTaskStatusEnum.create.value:
return {label: conveyTaskStatusEnum.create.label, color: conveyTaskStatusEnum.create.color};
case conveyTaskStatusEnum.moved.value:
return {label: conveyTaskStatusEnum.moved.label, color: conveyTaskStatusEnum.moved.color};
case conveyTaskStatusEnum.arrive.value:
return {label: conveyTaskStatusEnum.arrive.label, color: conveyTaskStatusEnum.arrive.color};
default:
return {label: `未知类型:${value}`, color: 'danger'};
}
}

View File

@ -0,0 +1,38 @@
// 箱式线任务类型
export const conveyTaskTypeEnum = {
pick: {
value: 1,
label: '拣选任务',
color: 'primary'
},
replenish: {
value: 2,
label: '补货任务',
color: 'warning'
},
deliver: {
value: 3,
label: '发货任务',
color: 'success'
},
check: {
value: 4,
label: '复核任务',
color: 'info'
}
}
export function formatterConveyTaskTypeEnum(value) {
switch (parseInt(value)){
case conveyTaskTypeEnum.pick.value:
return {label: conveyTaskTypeEnum.pick.label, color: conveyTaskTypeEnum.pick.color};
case conveyTaskTypeEnum.replenish.value:
return {label: conveyTaskTypeEnum.replenish.label, color: conveyTaskTypeEnum.replenish.color};
case conveyTaskTypeEnum.deliver.value:
return {label: conveyTaskTypeEnum.deliver.label, color: conveyTaskTypeEnum.deliver.color};
case conveyTaskTypeEnum.check.value:
return {label: conveyTaskTypeEnum.check.label, color: conveyTaskTypeEnum.check.color};
default:
return {label: `未知类型:${value}`, color: 'danger'};
}
}

View File

@ -19,6 +19,7 @@ const routes = [
{ path: 'wmsTask', name: 'wmsTask', component:() => import('../view/tab/taskManage/WmsTask.vue') }, // Wms任务管理 { path: 'wmsTask', name: 'wmsTask', component:() => import('../view/tab/taskManage/WmsTask.vue') }, // Wms任务管理
{ path: 'wcsTask', name: 'wcsTask', component:() => import('../view/tab/taskManage/WcsTask.vue') }, // Wcs任务管理 { path: 'wcsTask', name: 'wcsTask', component:() => import('../view/tab/taskManage/WcsTask.vue') }, // Wcs任务管理
{ path: 'elTagTask', name: 'elTagTask', component:() => import('../view/tab/taskManage/ElTagTask.vue') }, // 电子标签任务管理 { path: 'elTagTask', name: 'elTagTask', component:() => import('../view/tab/taskManage/ElTagTask.vue') }, // 电子标签任务管理
{ path: 'conveyTask', name: 'conveyTask', component:() => import('../view/tab/taskManage/ConveyTask.vue') }, // 输送线任务管理
// 设备管理 // 设备管理
{ path: 'location', name: 'location', component:() => import('@/view/tab/equipmentManage/LocationData.vue') }, // 点位/库位管理 { path: 'location', name: 'location', component:() => import('@/view/tab/equipmentManage/LocationData.vue') }, // 点位/库位管理
{ path: 'stackerData', name: 'stackerData', component:() => import('@/view/tab/equipmentManage/StackerData.vue') }, // 堆垛机管理 { path: 'stackerData', name: 'stackerData', component:() => import('@/view/tab/equipmentManage/StackerData.vue') }, // 堆垛机管理

View File

@ -0,0 +1,127 @@
<!-- -->
<template>
<div>
<el-row style="width: calc(100vw - 270px)">
<h5>箱式线任务列表</h5>
<el-table :data="modelValue" border stripe max-height="calc(100vh - 550px)">
<el-table-column fixed prop="taskId" label="任务号" width="230px" align="center" show-overflow-tooltip/>
<el-table-column fixed prop="taskGroup" label="任务组" width="120px" align="center" show-overflow-tooltip/>
<el-table-column prop="vehicleNo" label="载具号" width="120px" align="center" show-overflow-tooltip/>
<el-table-column prop="taskType" label="任务类型" width="140px" align="center">
<template #default="scope">
<el-tag class="ml-2" :type=formatterConveyTaskTypeEnum(scope.row.taskType).color>
{{formatterConveyTaskTypeEnum(scope.row.taskType).label }}</el-tag>
</template>
</el-table-column>
<el-table-column prop="taskStatus" label="任务状态" width="140px" align="center">
<template #default="scope">
<el-tag class="ml-2" :type=formatterConveyTaskStatusEnum(scope.row.taskStatus).color>
{{formatterConveyTaskStatusEnum(scope.row.taskStatus).label }}</el-tag>
</template>
</el-table-column>
<el-table-column prop="location" label="目标点位" width="100px" align="center" show-overflow-tooltip/>
<el-table-column prop="arriveLocation" label="实际点位" width="100px" align="center" show-overflow-tooltip/>
<el-table-column prop="createPerson" label="创建人" width="100px" align="center" show-overflow-tooltip/>
<el-table-column prop="createTime" label="创建时间" :formatter="formatterTime" width="160px" align="center" show-overflow-tooltip/>
<el-table-column prop="moveTime" label="移栽时间" :formatter="formatterTime" width="160px" align="center" show-overflow-tooltip/>
<el-table-column prop="completeTime" label="完成时间" :formatter="formatterTime" width="160px" align="center" show-overflow-tooltip/>
<el-table-column prop="remark" label="备注" show-overflow-tooltip min-width="80px"/>
<el-table-column fixed="right" label="操作" align="center" width="80">
<template #default="scope">
<el-button-group class="ml-4">
<el-tooltip content="编辑任务" placement="top" effect="light">
<el-button type="warning" size="small" @click="edit(scope.row)">
<el-icon><Edit/></el-icon>
</el-button>
</el-tooltip>
</el-button-group>
</template>
</el-table-column>
</el-table>
</el-row>
<el-row style="margin-top: 15px">
<el-pagination
small
v-if="searchParams.page.totalRow > 0"
background
v-model:page-size="searchParams.page.pageSize"
v-model:current-page="searchParams.page.pageIndex"
:page-sizes="[20, 50, 100, 200, 500]"
layout="prev, pager, next, jumper, sizes, total"
:total="searchParams.page.totalRow"
@size-change="searchData"
@current-change="searchData"
/>
</el-row>
</div>
</template>
<script>
// import from ' ';
import {Edit, Switch} from "@element-plus/icons-vue";
import {formatterConveyTaskStatusEnum} from "@/enum/convey/convey.task.status.enum";
import {formatterConveyTaskTypeEnum} from "@/enum/convey/convey.task.type.enum";
import formatterTime from "@/plugins/formatter/formatter.time";
export default {
// import 使
components: {Edit, Switch},
props: ['modelValue', 'searchParams'],
emits: ['update:modelValue', 'update:searchParams', 'pageChange'],
data() {
//
return {}
},
// data
computed: {
},
// data
watch: {},
//
methods: {
formatterTime: formatterTime.formatCellValueTime,
formatterConveyTaskTypeEnum,
formatterConveyTaskStatusEnum,
searchData(){
this.$emit('pageChange', this.searchParams)
},
edit(row) {
}
},
// API
setup() {
},
//
beforeCreate() {
},
// (访 this )
created() {
},
// -
beforeMount() {
},
// - 访 DOM
mounted() {
},
//
beforeUpdate() {
},
//
updated() {
},
//
beforeUnmount() {
},
//
unmounted() {
}
}
</script>
<style lang="scss" scoped>
</style>

View File

@ -0,0 +1,147 @@
<!-- -->
<template>
<div style="border-radius: 5px; border: #2c3e5033 solid 1px; padding: 10px">
<el-row>
<el-form :model="searchParams" label-width="120" label-position="left" >
<el-form-item label="查询关键字:">
<el-input placeholder="输入 任务号/任务组/箱号/点位 查询..." v-model="searchParams.searchStr" clearable></el-input>
</el-form-item>
<el-form-item label="任务类型:">
<el-select v-model="searchParams.conveyTaskType" multiple placeholder="请选择需要查询的任务类型">
<el-option v-for="item in conveyTaskTypeEnum" :key="item.value" :label="item.label" :value="item.value"/>
</el-select>
</el-form-item>
<el-form-item label="任务状态:">
<el-select v-model="searchParams.conveyTaskStatus" multiple placeholder="请选择需要查询的任务状态">
<el-option v-for="item in conveyTaskStatusEnum" :key="item.value" :label="item.label" :value="item.value"/>
</el-select>
</el-form-item>
<el-form-item label="任务创建时间:">
<el-date-picker
v-model="searchParams.timeRange"
type="datetimerange"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DDTHH:mm:ss"
unlink-panels
range-separator="至"
start-placeholder="开始时间"
end-placeholder="截止时间"
/>
</el-form-item>
</el-form>
</el-row>
<el-row>
<el-button type="primary" @click="searchBtn">查询/刷新</el-button>
<el-button type="success" @click="showAddForm = true">新增任务</el-button>
</el-row>
</div>
</template>
<script>
// import from ' ';
import conveyApi from "@/axios/convey";
import {conveyTaskTypeEnum} from "@/enum/convey/convey.task.type.enum";
import {conveyTaskStatusEnum} from "@/enum/convey/convey.task.status.enum";
import {ElLoading, ElMessage} from "element-plus";
export default {
// import 使
components: {},
props: ['searchParams', 'modelValue'],
emits: ['update:searchParams', 'update:modelValue'],
data() {
//
return {}
},
// data
computed: {
conveyTaskStatusEnum() {
return conveyTaskStatusEnum
},
conveyTaskTypeEnum() {
return conveyTaskTypeEnum
}
},
// data
watch: {},
//
methods: {
searchBtn() {
this.searchParams.page.pageIndex = 1;
this.searchParams.page.pageSize = 50;
this.$emit('update:searchParams', this.searchParams);
this.searchData(this.searchParams);
},
searchData(searchParams) {
const loading = ElLoading.service({
lock: true,
text: '加载中...',
})
this.$emit('update:modelValue', [])
conveyApi.getConveyTaskWithPage(searchParams).then((response) => {
const responseData = response.data
if (responseData.code === 0) {
ElMessage({
message: '查询成功',
type: 'success',
})
//
this.searchParams.page.totalRow = parseInt(responseData["tag"])
this.$emit('update:searchParams', this.searchParams)
this.$emit('update:modelValue', Object.freeze(responseData["returnData"]))
} else {
//
ElMessage({
message: '服务器返回失败:' + responseData.msg,
type: 'warning',
})
}
}).catch((ex) => {
//
ElMessage({
message: '请求服务器失败:' + ex,
type: 'error',
})
}).finally(() => {
loading.close()
})
},
showAddForm() {
}
},
// API
setup() {
},
//
beforeCreate() {
},
// (访 this )
created() {
},
// -
beforeMount() {
},
// - 访 DOM
mounted() {
},
//
beforeUpdate() {
},
//
updated() {
},
//
beforeUnmount() {
},
//
unmounted() {
}
}
</script>
<style lang="scss" scoped>
</style>

View File

@ -0,0 +1,86 @@
<!-- -->
<template>
<div>
<el-row >
<SearchForm ref="searchForm" v-model:searchParams="searchParams" v-model="conveyTaskList" style="width: 100%"></SearchForm>
</el-row>
<el-row>
<ConveyTaskList v-model="conveyTaskList" v-model:searchParams="searchParams" @pageChange="pageChange"></ConveyTaskList>
</el-row>
</div>
</template>
<script>
// import from ' ';
import SearchForm from "@/view/component/conveyTask/SearchForm.vue";
import ConveyTaskList from "@/view/component/conveyTask/ConveyTaskList.vue";
export default {
// import 使
components: { SearchForm, ConveyTaskList},
props: [],
emits: [],
data() {
//
return {
//
searchParams: {
searchStr: '',
conveyTaskType: [1,2,3,4],
conveyTaskStatus: [0,1,],
timeRange: [],
page: {
pageIndex: 1,
pageSize: 50,
totalRow: 0
}
},
//
conveyTaskList: []
}
},
// data
computed: {},
// data
watch: {},
//
methods: {
pageChange() {
this.$refs.searchForm.searchData(this.searchParams)
}
},
// API
setup() {
},
//
beforeCreate() {
},
// (访 this )
created() {
},
// -
beforeMount() {
},
// - 访 DOM
mounted() {
},
//
beforeUpdate() {
},
//
updated() {
},
//
beforeUnmount() {
},
//
unmounted() {
}
}
</script>
<style lang="scss" scoped>
</style>