wms_client_kate_suzhou/src/layout/callEmptyVehicle.vue
2024-07-26 17:00:49 +08:00

427 lines
14 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<el-config-provider :locale="zhCn">
<el-container class="content">
<div class="work-area">
<fieldset class="title-area">
<legend>
工作台
</legend>
<div class="title-div">
<span class="title-text">呼叫空箱</span>
</div>
<div class="station-div">
<span class="station-text">工作站</span>
</div>
<div class="station-no-div">
<span class="station-no-text">{{ standId }}</span>
</div>
</fieldset>
<fieldset class="main-area">
<legend>
备料执行
</legend>
<el-form ref="workFormRef" :model="workFormEntity" :label-position="labelPosition"
label-width="150px" style="max-width: 100%" :rules="rules" status-icon>
<div style="display: flex;">
<div style="display: block; margin: 5px;">
<div style="display: none;">{{ workFormEntity.tip }}</div>
<div style="display: flex;">
<div style="display: flex; flex-direction: column;">
<div class="display-title-div">
<span class="display-title-text">物料种类选择</span>
</div>
<div class="display-form-div">
<el-select-v2 v-model="workFormEntity.vehicleType2" placeholder="请选择类型"
:options="vehicleType2Options"
@change="vehicleType2ChangeHandle()"></el-select-v2>
<!-- <el-input v-model="workFormEntity.goodsId" size="default"
v-on:keyup.enter="getCurrentWorkInfo()" clearable></el-input> -->
</div>
</div>
<div v-if="displayVehicleType1Selection"
style="display: flex; flex-direction: column;">
<div class="display-title-div">
<span class="display-title-text">料箱种类选择</span>
</div>
<div class="display-form-div">
<el-select-v2 v-model="workFormEntity.vehicleType1" placeholder="请选择类型"
:options="vehicleType1Options"></el-select-v2>
<!-- <el-input v-model="workFormEntity.goodsId" size="default"
v-on:keyup.enter="getCurrentWorkInfo()" clearable></el-input> -->
</div>
</div>
<div v-if="displayGoods" style="display: flex; flex-direction: column;">
<div class="display-title-div">
<span class="display-title-text">料号</span>
</div>
<div class="display-form-div">
<el-input v-model="workFormEntity.goodsId" size="default"
clearable></el-input>
</div>
</div>
<div style="display: flex; flex-direction: column;">
<div class="display-title-div">
<span class="display-title-text">料箱数量</span>
</div>
<div style="display: flex; margin-top: 20px;">
<div class="display-form-div-left">
<el-input-number v-model.number="workFormEntity.needNum"
controls-position="right" :min="0" />
</div>
<div class="display-form-div-right">
<span class="display-form-text-right">个</span>
</div>
</div>
</div>
</div>
</div>
<div style="margin: 10px;">
<div class="arrow" @click="confirmTask()">
<span
style="margin-left: 25px; align-self: center; font-weight: bold;font-size: 45px; writing-mode: vertical-lr;">完成确认</span>
</div>
</div>
</div>
</el-form>
</fieldset>
</div>
</el-container>
</el-config-provider>
</template>
<script setup>
import store from '@/store'
import { callEmptyVehicle } from '@/api/task'
import { reactive, ref } from 'vue'
import { ElMessage } from 'element-plus'
import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
</script>
<script>
export default {
name: 'callEmptyVehicle',
data() {
return {
standId: store.getters.getStandId,
displayGoods: false,// 是否显示料号输入
displayVehicleType1Selection: false,// 是否显示料箱类型选择
// timer: '',
labelPosition: 'top',
workFormRef: ref(),
workFormEntity: reactive({
vehicleType1: '',
vehicleType2: '',
goodsId: '',
needNum: 0
}),
rules: reactive({
goodsId: [
{ required: true, message: '请输入料号' }
]
}),
vehicleType1Options: [],
vehicleType2Options: [
{
value: 'CLC一箱一料',
label: 'CLC一箱一料'
},
{
value: 'CLC一箱两料',
label: 'CLC一箱两料'
},
{
value: 'No-CLC',
label: 'No-CLC'
},
{
value: '间接物料',
label: '间接物料'
}
]
}
},
mounted() {
// this.timer = setInterval(() => {
// // this.getAllTasks()
// }, 2000)
},
beforeUnmount() {
// clearInterval(this.timer)
},
methods: {
vehicleType2ChangeHandle() {
if (this.workFormEntity.vehicleType2 == '间接物料') {
this.displayGoods = true
this.displayVehicleType1Selection = false
this.vehicleType1Options = [
{
value: 'FB02',
label: '分包1/2个料箱'
},
{
value: 'FB03',
label: '分包1/3个料箱'
},
{
value: 'FB04',
label: '分包1/4个料箱'
},
{
value: 'FB05',
label: '分包1/5个料箱'
},
{
value: 'FB06',
label: '分包1/6个料箱'
}
]
} else if (this.workFormEntity.vehicleType2 == 'CLC一箱一料') {
this.displayGoods = false
this.displayVehicleType1Selection = true
this.vehicleType1Options = [
{
value: 'LR02',
label: '811左右2个'
},
{
value: 'FC01',
label: '822整体1个'
}
]
} else if (this.workFormEntity.vehicleType2 == 'CLC一箱两料') {
this.displayGoods = true
this.displayVehicleType1Selection = true
this.vehicleType1Options = [
{
value: 'LR01',
label: '810左右4个'
},
{
value: 'UD01',
label: '911上下2个'
}
]
} else {
this.displayGoods = false
this.displayVehicleType1Selection = false
this.vehicleType1Options = [
{
value: 'FB01',
label: '分包1个料箱'
},
]
}
},
resetForms() {
this.workFormEntity = reactive({
vehicleType1: '',
vehicleType2: '',
goodsId: '',
needNum: 0
})
},
confirmTask() {
if (this.workFormEntity.vehicleType1 == '' && this.workFormEntity.vehicleType2 == '') {
ElMessage({
message: '存放类型和料箱类型至少需要一个',
type: 'error',
})
return
}
if (this.workFormEntity.needNum <= 0) {
ElMessage({
message: '料箱数量必须为大于0的整数',
type: 'error',
})
return
}
const request = {
vehicleType1: this.workFormEntity.vehicleType1,
vehicleType2: this.workFormEntity.vehicleType2,
goodsId: this.workFormEntity.goodsId,
needNum: this.workFormEntity.needNum
}
callEmptyVehicle(request).then(res => {
const response = res.data
if (response.code == 0) {
ElMessage({
message: '出空箱成功,请等待箱子到达',
type: 'success',
})
this.resetForms()
} else {
ElMessage.error(response.message)
}
}).catch(err => {
console.log(err)
ElMessage.error('出空箱异常')
})
}
}
}
</script>
<style scoped>
.content {
display: flex;
width: 100%;
}
.work-area {
width: 100%;
/* padding: 5px; */
}
.main-area {
margin: auto;
min-height: fit-content;
max-height: 90%;
margin-bottom: 10px;
min-width: inherit;
border: solid 1px;
border-radius: 10px;
box-shadow: 0px 15px 10px -15px #000;
overflow: auto;
}
.title-area {
display: flex;
min-height: 10%;
max-height: max-content;
margin-bottom: 10px;
min-width: inherit;
border: solid 1px;
border-radius: 10px;
box-shadow: 0px 15px 10px -15px #000;
overflow: auto;
}
.arrow {
background: linear-gradient(-105deg,
transparent 50%,
#309330 50%,
#309330 100%) top right,
linear-gradient(-75deg,
transparent 50%,
#309330 50%,
#309330 100%) bottom right;
background-size: 100% 50%;
height: 270px;
width: 250px;
background-repeat: no-repeat;
display: inline-flex;
cursor: pointer;
}
:deep(.el-input) {
width: 230px;
height: 130px;
font-size: 25px;
}
:deep(.el-input-number) {
width: 150px;
height: 130px;
font-size: 25px;
}
:deep(.el-select-v2__wrapper) {
width: 230px;
height: 130px;
font-size: 25px;
}
.title-div {
display: inline-flex;
width: -webkit-fill-available;
margin-right: 5px;
padding: 5px;
background-color: #CCCCCC;
}
.title-text {
align-self: center;
font-weight: bold;
font-size: 25px;
}
.station-div {
display: inline-flex;
justify-content: center;
width: 125px;
margin-left: 5px;
margin-right: 5px;
padding: 5px;
background-color: #FFFAAA;
}
.station-text {
align-self: center;
font-weight: bold;
font-size: 25px;
}
.station-no-div {
display: inline-flex;
justify-content: center;
width: 75px;
padding: 5px;
border: 5px double #000000;
}
.station-no-text {
align-self: center;
font-weight: bold;
font-size: 25px;
}
.display-title-div {
display: inline-flex;
justify-content: center;
width: 240px;
height: 80px;
margin: 5px;
padding: 5px;
background-color: #FFFAAA;
}
.display-title-text {
align-self: center;
font-weight: bold;
font-size: 25px;
}
.display-form-div {
display: inline-flex;
justify-content: center;
width: 230px;
margin: 5px;
padding: 5px;
border: 5px double #000000;
margin-top: 25px;
}
.display-form-div-left {
display: inline-flex;
justify-content: center;
width: 150px;
margin: 5px;
padding: 5px;
border: 5px double #000000;
}
.display-form-div-right {
display: inline-flex;
justify-content: center;
width: 60px;
margin: 5px;
padding: 5px;
background-color: #CCCCCC;
}
.display-form-text-right {
align-self: center;
font-weight: bold;
font-size: 25px;
}
</style>