1.备料业务完成
2.入库界面开始
This commit is contained in:
parent
b8321b332f
commit
31afefafe9
|
|
@ -72,6 +72,30 @@ const getWorkByStandAndGoods = (params) => {
|
|||
})
|
||||
}
|
||||
|
||||
const confirmFinishedWork = (params) => {
|
||||
return request({
|
||||
url: '/task/confirmFinishedWork',
|
||||
method: 'post',
|
||||
data: params
|
||||
})
|
||||
}
|
||||
|
||||
const getFinishedWorkInfo = (params) => {
|
||||
return request({
|
||||
url: '/task/getFinishedWorkInfo',
|
||||
method: 'post',
|
||||
data: params
|
||||
})
|
||||
}
|
||||
|
||||
const confirmFinishWork = (params) => {
|
||||
return request({
|
||||
url: '/task/confirmFinishWork',
|
||||
method: 'post',
|
||||
data: params
|
||||
})
|
||||
}
|
||||
|
||||
export {
|
||||
sendGoodsInTask,
|
||||
sendGoodsOutTask,
|
||||
|
|
@ -81,5 +105,8 @@ export {
|
|||
getTasks,
|
||||
finishPickingAndBack,
|
||||
changeTaskStatus,
|
||||
getWorkByStandAndGoods
|
||||
getWorkByStandAndGoods,
|
||||
confirmFinishedWork,
|
||||
confirmFinishWork,
|
||||
getFinishedWorkInfo
|
||||
}
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
工作台
|
||||
</legend>
|
||||
<div class="title-div">
|
||||
<span class="title-text">Kitting备料</span>
|
||||
<span class="title-text">呼叫空箱</span>
|
||||
</div>
|
||||
<div class="station-div">
|
||||
<span class="station-text">工作站:</span>
|
||||
|
|
@ -18,7 +18,7 @@
|
|||
</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>
|
||||
|
|
@ -32,7 +32,7 @@
|
|||
</div>
|
||||
<div class="display-form-div">
|
||||
<el-input v-model="workFormEntity.goodsId" size="default"
|
||||
v-on:keyup.prevent.enter="getCurrentWorkInfo()" clearable></el-input>
|
||||
v-on:keyup.enter="getCurrentWorkInfo()" clearable></el-input>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex; flex-direction: column;">
|
||||
|
|
@ -66,15 +66,16 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex; margin-top: 65px">
|
||||
<div style="display: flex; margin-top: 15px">
|
||||
<div
|
||||
style="display: inline-flex; justify-content: center; width: 160px; margin: 5px; padding: 5px; background-color: #CCCCCC;">
|
||||
<span style="align-self: center; font-weight: bold;font-size: 25px;">备注</span>
|
||||
</div>
|
||||
<div
|
||||
style="display: inline-flex; justify-content: center; width: 700px; margin: 5px; padding: 5px; background-color: #00AAE8;">
|
||||
<span style="align-self: center; font-weight: bold;font-size: 25px;">{{
|
||||
workFormEntity.remark }}</span>
|
||||
<span style="align-self: center; font-weight: bold;font-size: 25px;">
|
||||
{{ workFormEntity.remark }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex; margin-top: 5px; margin-top: 15px">
|
||||
|
|
@ -101,13 +102,14 @@
|
|||
</div>
|
||||
<div
|
||||
style="display: inline-flex; justify-content: center; width: 80px; margin: 5px; padding: 5px; background-color: #CCCCCC;">
|
||||
<span style="align-self: center; font-weight: bold;font-size: 20px;">{{
|
||||
workFormEntity.goodsUnit }}</span>
|
||||
<span style="align-self: center; font-weight: bold;font-size: 20px;">
|
||||
{{ workFormEntity.goodsUnit }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="margin: 10px;">
|
||||
<div class="arrow">
|
||||
<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>
|
||||
|
|
@ -122,8 +124,7 @@
|
|||
|
||||
<script setup>
|
||||
import store from '@/store'
|
||||
import { getWorkByStandAndGoods } from '@/api/task'
|
||||
import { taskStatusFormatter, dueFormatter, timeFormatter } from '@/utils/formatter.js'
|
||||
import { getWorkByStandAndGoods, confirmFinishWork } from '@/api/task'
|
||||
import { reactive, ref } from 'vue'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
|
||||
|
|
@ -131,11 +132,11 @@ import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
|
|||
|
||||
<script>
|
||||
export default {
|
||||
name: 'prepareGoods',
|
||||
name: 'callEmptyVehicle',
|
||||
data() {
|
||||
return {
|
||||
standId: store.getters.getStandId,
|
||||
timer: '',
|
||||
// timer: '',
|
||||
labelPosition: 'top',
|
||||
workFormRef: ref(),
|
||||
workFormEntity: reactive({
|
||||
|
|
@ -163,7 +164,7 @@ export default {
|
|||
// }, 2000)
|
||||
},
|
||||
beforeUnmount() {
|
||||
clearInterval(this.timer)
|
||||
// clearInterval(this.timer)
|
||||
},
|
||||
methods: {
|
||||
getCurrentWorkInfo() {
|
||||
|
|
@ -198,6 +199,7 @@ export default {
|
|||
this.workFormEntity.tip = response.returnData.tip
|
||||
} else {
|
||||
this.resetForms()
|
||||
ElMessage.error(response.message)
|
||||
}
|
||||
}).catch(err => {
|
||||
console.log(err)
|
||||
|
|
@ -207,68 +209,45 @@ export default {
|
|||
},
|
||||
resetForms() {
|
||||
this.workFormEntity = reactive({
|
||||
goodsId: '',
|
||||
goodsUnit: '',
|
||||
planPickNum: 0,
|
||||
actualDifference: 0,
|
||||
remark: '',
|
||||
finishedRows: 0,
|
||||
totalRows: 0,
|
||||
finishedCounts: 0,
|
||||
totalCounts: 0,
|
||||
tip: ''
|
||||
})
|
||||
goodsId: '',
|
||||
goodsUnit: '',
|
||||
planPickNum: 0,
|
||||
actualDifference: 0,
|
||||
remark: '',
|
||||
finishedRows: 0,
|
||||
totalRows: 0,
|
||||
finishedCounts: 0,
|
||||
totalCounts: 0,
|
||||
tip: ''
|
||||
})
|
||||
},
|
||||
// 任务状态中文化
|
||||
taskStatusFormat: (row, column, cellValue, index) => {
|
||||
return taskStatusFormatter(cellValue)
|
||||
},
|
||||
// 任务时长中文化
|
||||
dueFormat: (row, column, cellValue, index) => {
|
||||
return dueFormatter(cellValue)
|
||||
},
|
||||
// 时间格式化
|
||||
timeFormat: (row, column, cellValue, index) => {
|
||||
return timeFormatter(cellValue)
|
||||
},
|
||||
confirmTask(formEl, formData) {
|
||||
if (!formEl) return
|
||||
formEl.validate((valid) => {
|
||||
if (!valid) {
|
||||
ElMessage({
|
||||
message: '确认信息验证失败',
|
||||
type: 'warning',
|
||||
})
|
||||
return
|
||||
}
|
||||
if (formData.taskId = '' || formData.vehicleId == '' || formData.goodsId == '') {
|
||||
ElMessage({
|
||||
message: '载具号、物料号、任务号不可缺少',
|
||||
type: 'error',
|
||||
})
|
||||
return
|
||||
}
|
||||
const confirmParams = {
|
||||
taskId: formData.taskId,
|
||||
vehicleId: formData.vehicleId,
|
||||
goodsId: formData.goodsId,
|
||||
opNum: formData.opNum,
|
||||
originNum: formData.originNum,
|
||||
userName: formData.userName
|
||||
}
|
||||
finishPickingAndBack(confirmParams).then(res => {
|
||||
if (res.data.code == 0) {
|
||||
ElMessage({
|
||||
message: '确认成功!',
|
||||
type: 'success',
|
||||
})
|
||||
formEl.resetFields()
|
||||
} else {
|
||||
ElMessage.error(res.data.message)
|
||||
}
|
||||
}).catch(err => {
|
||||
ElMessage.error('创建出库任务错误!')
|
||||
confirmTask() {
|
||||
if (this.standId == '' || this.workFormEntity.goodsId == '') {
|
||||
ElMessage({
|
||||
message: '站台号和料号不可缺少',
|
||||
type: 'error',
|
||||
})
|
||||
return
|
||||
}
|
||||
const confirmParams = {
|
||||
standId: this.standId,
|
||||
goodsId: this.workFormEntity.goodsId,
|
||||
actualDifference: this.workFormEntity.actualDifference
|
||||
}
|
||||
confirmFinishWork(confirmParams).then(res => {
|
||||
const response = res.data
|
||||
if (response.code == 0) {
|
||||
ElMessage({
|
||||
message: response.message,
|
||||
type: 'success',
|
||||
})
|
||||
this.resetForms()
|
||||
} else {
|
||||
ElMessage.error(response.message)
|
||||
}
|
||||
}).catch(err => {
|
||||
console.log(err)
|
||||
ElMessage.error('确认时发生异常')
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -288,7 +267,8 @@ export default {
|
|||
|
||||
.main-area {
|
||||
margin: auto;
|
||||
height: 90%;
|
||||
min-height: fit-content;
|
||||
max-height: 90%;
|
||||
margin-bottom: 10px;
|
||||
min-width: inherit;
|
||||
border: solid 1px;
|
||||
|
|
@ -299,7 +279,8 @@ export default {
|
|||
|
||||
.title-area {
|
||||
display: flex;
|
||||
height: 10%;
|
||||
min-height: 10%;
|
||||
max-height: max-content;
|
||||
margin-bottom: 10px;
|
||||
min-width: inherit;
|
||||
border: solid 1px;
|
||||
|
|
@ -318,10 +299,11 @@ export default {
|
|||
#309330 50%,
|
||||
#309330 100%) bottom right;
|
||||
background-size: 100% 50%;
|
||||
height: 450px;
|
||||
height: 400px;
|
||||
width: 250px;
|
||||
background-repeat: no-repeat;
|
||||
display: inline-flex;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
:deep(.el-input) {
|
||||
412
src/layout/doKitting.vue
Normal file
412
src/layout/doKitting.vue
Normal file
|
|
@ -0,0 +1,412 @@
|
|||
<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">Kitting备料执行</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-input v-model="workFormEntity.goodsId" size="default"
|
||||
v-on:keyup.enter="getCurrentWorkInfo()" 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.planPickNum"
|
||||
controls-position="right" :min="0" width="200px" />
|
||||
</div>
|
||||
<div class="display-form-div-right">
|
||||
<span class="display-form-text-right">{{ workFormEntity.goodsUnit
|
||||
}}</span>
|
||||
</div>
|
||||
</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.actualDifference"
|
||||
controls-position="right" :min="0" />
|
||||
</div>
|
||||
<div class="display-form-div-right">
|
||||
<span class="display-form-text-right">{{ workFormEntity.goodsUnit
|
||||
}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex; margin-top: 15px">
|
||||
<div
|
||||
style="display: inline-flex; justify-content: center; width: 160px; margin: 5px; padding: 5px; background-color: #CCCCCC;">
|
||||
<span style="align-self: center; font-weight: bold;font-size: 25px;">备注</span>
|
||||
</div>
|
||||
<div
|
||||
style="display: inline-flex; justify-content: center; width: 700px; margin: 5px; padding: 5px; background-color: #00AAE8;">
|
||||
<span style="align-self: center; font-weight: bold;font-size: 25px;">
|
||||
{{ workFormEntity.remark }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex; margin-top: 5px; margin-top: 15px">
|
||||
<div
|
||||
style="display: inline-flex; justify-content: center; width: 160px; margin: 5px; padding: 5px; background-color: #CCCCCC;">
|
||||
<span
|
||||
style="align-self: center; font-weight: bold;font-size: 20px;">当前进度:</span>
|
||||
</div>
|
||||
<div
|
||||
style="display: inline-flex; justify-content: center; width: 240px; margin: 5px; padding: 5px; background-color: #CCCCCC;">
|
||||
<span style="align-self: center; font-weight: bold;font-size: 20px;">
|
||||
{{ workFormEntity.finishedRows + '/' + workFormEntity.totalRows }}
|
||||
</span>
|
||||
</div>
|
||||
<div
|
||||
style="display: inline-flex; justify-content: center; width: 80px; margin: 5px; padding: 5px; background-color: #CCCCCC;">
|
||||
<span style="align-self: center; font-weight: bold;font-size: 20px;">行</span>
|
||||
</div>
|
||||
<div
|
||||
style="display: inline-flex; justify-content: center; width: 240px; margin: 5px; padding: 5px; background-color: #CCCCCC;">
|
||||
<span style="align-self: center; font-weight: bold;font-size: 20px;">
|
||||
{{ workFormEntity.finishedCounts + '/' + workFormEntity.totalCounts }}
|
||||
</span>
|
||||
</div>
|
||||
<div
|
||||
style="display: inline-flex; justify-content: center; width: 80px; margin: 5px; padding: 5px; background-color: #CCCCCC;">
|
||||
<span style="align-self: center; font-weight: bold;font-size: 20px;">
|
||||
{{ workFormEntity.goodsUnit }}
|
||||
</span>
|
||||
</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 { getWorkByStandAndGoods, confirmFinishWork } 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: 'doKitting',
|
||||
data() {
|
||||
return {
|
||||
standId: store.getters.getStandId,
|
||||
// timer: '',
|
||||
labelPosition: 'top',
|
||||
workFormRef: ref(),
|
||||
workFormEntity: reactive({
|
||||
goodsId: '',
|
||||
goodsUnit: '',
|
||||
planPickNum: 0,
|
||||
actualDifference: 0,
|
||||
remark: '',
|
||||
finishedRows: 0,
|
||||
totalRows: 0,
|
||||
finishedCounts: 0,
|
||||
totalCounts: 0,
|
||||
tip: ''
|
||||
}),
|
||||
rules: reactive({
|
||||
goodsId: [
|
||||
{ required: true, message: '请输入料号' }
|
||||
]
|
||||
}),
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
// this.timer = setInterval(() => {
|
||||
// // this.getAllTasks()
|
||||
// }, 2000)
|
||||
},
|
||||
beforeUnmount() {
|
||||
// clearInterval(this.timer)
|
||||
},
|
||||
methods: {
|
||||
getCurrentWorkInfo() {
|
||||
// this.workFormEntity = {
|
||||
// goodsId: 'text0001',
|
||||
// goodsUnit: 'PC',
|
||||
// planPickNum: 10,
|
||||
// actualDifference: 0,
|
||||
// remark: '装盒子',
|
||||
// finishedRows: 800,
|
||||
// totalRows: 2500,
|
||||
// finishedCounts: 2500,
|
||||
// totalCounts: 6000,
|
||||
// tip: ''
|
||||
// }
|
||||
const request = {
|
||||
standId: this.standId,
|
||||
goodsId: this.workFormEntity.goodsId
|
||||
}
|
||||
getWorkByStandAndGoods(request).then(res => {
|
||||
const response = res.data
|
||||
if (response.code == 0) {
|
||||
this.workFormEntity.goodsId = response.returnData.goodsId
|
||||
this.workFormEntity.goodsUnit = response.returnData.goodsUnit
|
||||
this.workFormEntity.planPickNum = response.returnData.planPickNum
|
||||
this.workFormEntity.actualDifference = response.returnData.actualDifference
|
||||
this.workFormEntity.remark = response.returnData.remark
|
||||
this.workFormEntity.finishedRows = response.returnData.finishedRows
|
||||
this.workFormEntity.totalRows = response.returnData.totalRows
|
||||
this.workFormEntity.finishedCounts = response.returnData.finishedCounts
|
||||
this.workFormEntity.totalCounts = response.returnData.totalCounts
|
||||
this.workFormEntity.tip = response.returnData.tip
|
||||
} else {
|
||||
this.resetForms()
|
||||
ElMessage.error(response.message)
|
||||
}
|
||||
}).catch(err => {
|
||||
console.log(err)
|
||||
this.resetForms()
|
||||
ElMessage.error('查询工作信息错误')
|
||||
})
|
||||
},
|
||||
resetForms() {
|
||||
this.workFormEntity = reactive({
|
||||
goodsId: '',
|
||||
goodsUnit: '',
|
||||
planPickNum: 0,
|
||||
actualDifference: 0,
|
||||
remark: '',
|
||||
finishedRows: 0,
|
||||
totalRows: 0,
|
||||
finishedCounts: 0,
|
||||
totalCounts: 0,
|
||||
tip: ''
|
||||
})
|
||||
},
|
||||
confirmTask() {
|
||||
if (this.standId == '' || this.workFormEntity.goodsId == '') {
|
||||
ElMessage({
|
||||
message: '站台号和料号不可缺少',
|
||||
type: 'error',
|
||||
})
|
||||
return
|
||||
}
|
||||
const confirmParams = {
|
||||
standId: this.standId,
|
||||
goodsId: this.workFormEntity.goodsId,
|
||||
actualDifference: this.workFormEntity.actualDifference
|
||||
}
|
||||
confirmFinishWork(confirmParams).then(res => {
|
||||
const response = res.data
|
||||
if (response.code == 0) {
|
||||
ElMessage({
|
||||
message: response.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: 400px;
|
||||
width: 250px;
|
||||
background-repeat: no-repeat;
|
||||
display: inline-flex;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
:deep(.el-input) {
|
||||
height: 130px;
|
||||
font-size: 25px;
|
||||
}
|
||||
|
||||
:deep(.el-input-number) {
|
||||
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: 280px;
|
||||
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: 270px;
|
||||
margin: 5px;
|
||||
padding: 5px;
|
||||
border: 5px double #000000;
|
||||
margin-top: 25px;
|
||||
}
|
||||
|
||||
.display-form-div-left {
|
||||
display: inline-flex;
|
||||
justify-content: center;
|
||||
width: 170px;
|
||||
margin: 5px;
|
||||
padding: 5px;
|
||||
border: 5px double #000000;
|
||||
}
|
||||
|
||||
.display-form-div-right {
|
||||
display: inline-flex;
|
||||
justify-content: center;
|
||||
width: 80px;
|
||||
margin: 5px;
|
||||
padding: 5px;
|
||||
background-color: #CCCCCC;
|
||||
}
|
||||
|
||||
.display-form-text-right {
|
||||
align-self: center;
|
||||
font-weight: bold;
|
||||
font-size: 25px;
|
||||
}
|
||||
</style>
|
||||
379
src/layout/finishKitting.vue
Normal file
379
src/layout/finishKitting.vue
Normal file
|
|
@ -0,0 +1,379 @@
|
|||
<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">Kitting备料完成</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: inline-flex; justify-content: center; height: 60px; width: 880px; margin: 5px; padding: 5px; background-color: #00AAE8;">
|
||||
<span style="align-self: center; font-weight: bold;font-size: 25px;">
|
||||
{{ workFormEntity.tip }}
|
||||
</span>
|
||||
</div>
|
||||
<div style="display: flex; margin-top: 5px; margin-top: 15px">
|
||||
<div
|
||||
style="display: inline-flex; justify-content: center; width: 160px; margin: 5px; padding: 5px; background-color: #CCCCCC;">
|
||||
<span
|
||||
style="align-self: center; font-weight: bold;font-size: 20px;">计划完成:</span>
|
||||
</div>
|
||||
<div
|
||||
style="display: inline-flex; justify-content: center; width: 240px; margin: 5px; padding: 5px; background-color: #CCCCCC;">
|
||||
<span style="align-self: center; font-weight: bold;font-size: 20px;">
|
||||
{{ workFormEntity.planRows }}
|
||||
</span>
|
||||
</div>
|
||||
<div
|
||||
style="display: inline-flex; justify-content: center; width: 80px; margin: 5px; padding: 5px; background-color: #CCCCCC;">
|
||||
<span style="align-self: center; font-weight: bold;font-size: 20px;">行</span>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex; margin-top: 5px; margin-top: 15px">
|
||||
<div
|
||||
style="display: inline-flex; justify-content: center; width: 160px; margin: 5px; padding: 5px; background-color: #CCCCCC;">
|
||||
<span
|
||||
style="align-self: center; font-weight: bold;font-size: 20px;">实际完成:</span>
|
||||
</div>
|
||||
<div
|
||||
style="display: inline-flex; justify-content: center; width: 240px; margin: 5px; padding: 5px; background-color: #CCCCCC;">
|
||||
<span style="align-self: center; font-weight: bold;font-size: 20px;">
|
||||
{{ workFormEntity.actualRows }}
|
||||
</span>
|
||||
</div>
|
||||
<div
|
||||
style="display: inline-flex; justify-content: center; width: 80px; margin: 5px; padding: 5px; background-color: #CCCCCC;">
|
||||
<span style="align-self: center; font-weight: bold;font-size: 20px;">行</span>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex; margin-top: 5px; margin-top: 15px">
|
||||
<div
|
||||
style="display: inline-flex; justify-content: center; width: 160px; margin: 5px; padding: 5px; background-color: #CCCCCC;">
|
||||
<span
|
||||
style="align-self: center; font-weight: bold;font-size: 20px;">实际备料:</span>
|
||||
</div>
|
||||
<div
|
||||
style="display: inline-flex; justify-content: center; width: 240px; margin: 5px; padding: 5px; background-color: #CCCCCC;">
|
||||
<span style="align-self: center; font-weight: bold;font-size: 20px;">
|
||||
{{ workFormEntity.actualCounts }}
|
||||
</span>
|
||||
</div>
|
||||
<div
|
||||
style="display: inline-flex; justify-content: center; width: 80px; margin: 5px; padding: 5px; background-color: #CCCCCC;">
|
||||
<span style="align-self: center; font-weight: bold;font-size: 20px;">PC</span>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex; margin-top: 15px">
|
||||
<div
|
||||
style="display: inline-flex; justify-content: center; width: 160px; margin: 5px; padding: 5px; background-color: #CCCCCC;">
|
||||
<span style="align-self: center; font-weight: bold;font-size: 25px;">备注</span>
|
||||
</div>
|
||||
<div
|
||||
style="display: inline-flex; justify-content: center; width: 700px; margin: 5px; padding: 5px; background-color: #00AAE8;">
|
||||
<span style="align-self: center; font-weight: bold;font-size: 25px;">
|
||||
{{ workFormEntity.remark }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="margin: 10px;">
|
||||
<div class="arrow" @click="confirmWork()">
|
||||
<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 { getFinishedWorkInfo, confirmFinishedWork } 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: 'finishKitting',
|
||||
data() {
|
||||
return {
|
||||
standId: store.getters.getStandId,
|
||||
// timer: '',
|
||||
labelPosition: 'top',
|
||||
workFormRef: ref(),
|
||||
workFormEntity: reactive({
|
||||
tip: '',
|
||||
remark: '',
|
||||
planRows: 0,
|
||||
actualRows: 0,
|
||||
planCounts: 0,
|
||||
actualCounts: 0
|
||||
}),
|
||||
rules: reactive({
|
||||
goodsId: [
|
||||
{ required: true, message: '请输入料号' }
|
||||
]
|
||||
}),
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getFinishedWorkInfo()
|
||||
// this.timer = setInterval(() => {
|
||||
// this.getFinishedWorkInfo()
|
||||
// }, 2000)
|
||||
},
|
||||
beforeUnmount() {
|
||||
// clearInterval(this.timer)
|
||||
},
|
||||
methods: {
|
||||
getFinishedWorkInfo() {
|
||||
this.workFormEntity = {
|
||||
tip: '工作已完成,请打印标签',
|
||||
remark: '正常',
|
||||
planRows: 2500,
|
||||
actualRows: 2500,
|
||||
planCounts: 6000,
|
||||
actualCounts: 6000
|
||||
}
|
||||
// const request = {
|
||||
// standId: this.standId,
|
||||
// }
|
||||
// getFinishedWorkInfo(request).then(res => {
|
||||
// const response = res.data
|
||||
// if (response.code == 0) {
|
||||
// this.workFormEntity.tip = response.returnData.tip
|
||||
// this.workFormEntity.remark = response.returnData.remark
|
||||
// this.workFormEntity.planRows = response.returnData.planRows
|
||||
// this.workFormEntity.actualRows = response.returnData.actualRows
|
||||
// this.workFormEntity.planCounts = response.returnData.planCounts
|
||||
// this.workFormEntity.actualCounts = response.returnData.actualCounts
|
||||
// } else {
|
||||
// this.resetForms()
|
||||
// }
|
||||
// }).catch(err => {
|
||||
// console.log(err)
|
||||
// this.resetForms()
|
||||
// ElMessage.error('查询工作信息错误')
|
||||
// })
|
||||
},
|
||||
resetForms() {
|
||||
this.workFormEntity = reactive({
|
||||
tip: '',
|
||||
remark: '',
|
||||
planRows: 0,
|
||||
actualRows: 0,
|
||||
planCounts: 0,
|
||||
actualCounts: 0
|
||||
})
|
||||
},
|
||||
confirmWork() {
|
||||
if (formData.standId == '') {
|
||||
ElMessage({
|
||||
message: '站台号不可缺少',
|
||||
type: 'error',
|
||||
})
|
||||
return
|
||||
}
|
||||
const confirmParams = {
|
||||
standId: this.standId,
|
||||
}
|
||||
confirmFinishedWork(confirmParams).then(res => {
|
||||
const response = res.data
|
||||
if (response.code == 0) {
|
||||
ElMessage({
|
||||
message: response.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: 321px;
|
||||
width: 250px;
|
||||
background-repeat: no-repeat;
|
||||
display: inline-flex;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
:deep(.el-input) {
|
||||
height: 130px;
|
||||
font-size: 25px;
|
||||
}
|
||||
|
||||
:deep(.el-input-number) {
|
||||
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: 280px;
|
||||
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: 270px;
|
||||
margin: 5px;
|
||||
padding: 5px;
|
||||
border: 5px double #000000;
|
||||
margin-top: 25px;
|
||||
}
|
||||
|
||||
.display-form-div-left {
|
||||
display: inline-flex;
|
||||
justify-content: center;
|
||||
width: 170px;
|
||||
margin: 5px;
|
||||
padding: 5px;
|
||||
border: 5px double #000000;
|
||||
}
|
||||
|
||||
.display-form-div-right {
|
||||
display: inline-flex;
|
||||
justify-content: center;
|
||||
width: 80px;
|
||||
margin: 5px;
|
||||
padding: 5px;
|
||||
background-color: #CCCCCC;
|
||||
}
|
||||
|
||||
.display-form-text-right {
|
||||
align-self: center;
|
||||
font-weight: bold;
|
||||
font-size: 25px;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -25,7 +25,9 @@ const routes = [
|
|||
{ path: '/inventory', component: () => import('@/layout/inventory.vue') },// 盘点
|
||||
{ path: '/inventoryRecord', component: () => import('@/layout/inventoryRecord.vue') },// 盘点
|
||||
{ path: '/wmsLog', component: () => import('@/layout/wmsLog.vue') },// 日志
|
||||
{ path: '/testPrepareGoods', component: () => import('@/layout/prepareGoods.vue') },// 日志
|
||||
{ path: '/testDoKitting', component: () => import('@/layout/doKitting.vue') },// 备料执行
|
||||
{ path: '/testFinishKitting', component: () => import('@/layout/finishKitting.vue') },// 备料完成
|
||||
{ path: '/testCallEmptyVehicle', component: () => import('@/layout/callEmptyVehicle.vue') },// 备料完成
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user