代码更新:

1. 增加盘点相关内容
This commit is contained in:
梁州 2025-01-05 16:52:16 +08:00
parent ffac5ff1ab
commit 1a8296608e
4 changed files with 191 additions and 157 deletions

31
src/api/inventory.js Normal file
View File

@ -0,0 +1,31 @@
import request from "@/http/request";
const inventoryOut = (params) => {
return request({
url: '/task/inventoryOut',
method: 'post',
data: params
})
}
const getCurrentGoodsInventory = (params) => {
return request({
url: '/task/getCurrentGoodsInventory',
method: 'post',
data: params
})
}
const inventoryConfirmBack = (params) => {
return request({
url: '/task/inventoryConfirmBack',
method: 'post',
data: params
})
}
export {
inventoryOut,
getCurrentGoodsInventory,
inventoryConfirmBack
}

View File

@ -121,16 +121,8 @@ export default {
// vehicleType1Options: [], // vehicleType1Options: [],
vehicleType2Options: [ vehicleType2Options: [
{ {
value: 'CLC一箱一料', value: '直接物料',
label: 'CLC一箱一料' label: '直接物料'
},
{
value: 'CLC一箱两料',
label: 'CLC一箱两料'
},
{
value: 'No-CLC',
label: 'No-CLC'
}, },
{ {
value: '间接物料', value: '间接物料',
@ -151,60 +143,8 @@ export default {
vehicleType2ChangeHandle() { vehicleType2ChangeHandle() {
if (this.workFormEntity.vehicleType2 == '间接物料') { if (this.workFormEntity.vehicleType2 == '间接物料') {
this.displayGoods = true 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 = false
// this.vehicleType1Options = [
// {
// value: 'FC01',
// label: '8221'
// }
// ]
} else if (this.workFormEntity.vehicleType2 == 'CLC一箱两料') {
this.displayGoods = false
// this.displayVehicleType1Selection = false
// this.vehicleType1Options = [
// {
// value: 'LR01',
// label: '8104'
// },
// {
// value: 'UD01',
// label: '9112'
// }
// ]
} else { } else {
this.displayGoods = false this.displayGoods = false
// this.displayVehicleType1Selection = false
// this.vehicleType1Options = [
// {
// value: 'FB01',
// label: '1'
// },
// ]
} }
}, },
resetForms() { resetForms() {

View File

@ -7,7 +7,7 @@
:suffix-icon="Search" /> :suffix-icon="Search" />
<el-button type="primary" @click="search()">搜索</el-button> <el-button type="primary" @click="search()">搜索</el-button>
<el-button type="warning" @click="reset()">重置</el-button> <el-button type="warning" @click="reset()">重置</el-button>
<el-button type="warning" style="width: 201px; background-color: red; color: #000;" @click="setIndirect()">一键设置间接物料相关信息</el-button> <!-- <el-button type="warning" style="width: 201px; background-color: red; color: #000;" @click="setIndirect()">一键设置间接物料相关信息</el-button> -->
</el-row> </el-row>
<el-row> <el-row>
<el-button style="background-color: #00CED1; color: #000;" <el-button style="background-color: #00CED1; color: #000;"

View File

@ -16,6 +16,22 @@
<span class="station-no-text">{{ standId }}</span> <span class="station-no-text">{{ standId }}</span>
</div> </div>
</fieldset> </fieldset>
<fieldset class="goods-list-area">
<legend>
物料信息列表
</legend>
<el-table :data="inventoryGoodsDetails" stripe border max-height="200px"
:header-cell-style="{ 'text-align': 'center' }" :cell-style="{ 'text-align': 'center' }">
<el-table-column prop="goodsId" label="料号" min-width="120px" show-overflow-tooltip />
<el-table-column prop="vehiclesQuantity" label="料箱数量" min-width="120px" />
<el-table-column prop="vehicleIds" label="料箱号" min-width="120px" show-overflow-tooltip />
<el-table-column prop="vehicleStatus" label="料箱状态" min-width="120px" show-overflow-tooltip />
<el-table-column prop="feedingWS" label="备料工位" min-width="120px" show-overflow-tooltip />
<el-table-column prop="lastFeedingMachineNo" label="最后一台备料机器序列号" min-width="120px" show-overflow-tooltip />
<el-table-column prop="lastFeedingTime" label="备料最后一台车日期" min-width="120px" show-overflow-tooltip />
<el-table-column prop="isLack" label="是否缺料" min-width="120px" show-overflow-tooltip />
</el-table>
</fieldset>
<fieldset class="main-area"> <fieldset class="main-area">
<legend> <legend>
物料盘点 物料盘点
@ -24,15 +40,10 @@
label-width="150px" style="max-width: 100%" :rules="rules" status-icon> label-width="150px" style="max-width: 100%" :rules="rules" status-icon>
<div style="display: flex;"> <div style="display: flex;">
<div style="display: block; margin: 5px;"> <div style="display: block; margin: 5px;">
<!-- <div
style="display: inline-flex; justify-content: center; height: 60px; width: 655px; margin: 5px; padding: 5px;">
<UploadExcelPart></UploadExcelPart>
</div> -->
<div style="height: 50px; margin-bottom: 20px"><UploadExcelInventoryList></UploadExcelInventoryList></div>
<div <div
style="display: inline-flex; justify-content: center; height: 40px; width: 655px; margin: 5px; padding: 5px; background-color: #00AAE8;"> style="display: inline-flex; justify-content: center; height: 40px; width: 430px; margin: 5px; padding: 5px; background-color: #00AAE8;">
<span style="align-self: center; font-weight: bold;font-size: 25px;"> <span style="align-self: center; font-weight: bold;font-size: 25px;">
{{ workFormEntity.tip }} 输入完料号请按回车确认
</span> </span>
</div> </div>
<div style="display: flex;"> <div style="display: flex;">
@ -42,7 +53,7 @@
</div> </div>
<div class="display-form-div"> <div class="display-form-div">
<el-input v-model="workFormEntity.goodsId" size="default" ref="goodsId" <el-input v-model="workFormEntity.goodsId" size="default" ref="goodsId"
v-on:keyup.enter="getCurrentWorkInfo()" clearable></el-input> v-on:keyup.enter="getCurrentInvInfo()" clearable></el-input>
</div> </div>
</div> </div>
<div style="display: flex; flex-direction: column;"> <div style="display: flex; flex-direction: column;">
@ -50,18 +61,57 @@
<span class="display-title-text">箱号</span> <span class="display-title-text">箱号</span>
</div> </div>
<div class="display-form-div"> <div class="display-form-div">
<el-input v-model="workFormEntity.vehicleId" size="default" ref="vehicleId" <el-input v-model="workFormEntity.vehicleId" size="default" ref="vehicleId" clearable></el-input>
v-on:keyup.enter="getCurrentWorkInfo()" clearable></el-input> </div>
</div>
</div>
</div>
<div style="margin: 10px;">
<div class="arrow" @click="invenOut()" style="height: 330px;">
<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>
<fieldset class="main-area">
<legend>
盘点确认
</legend>
<el-form ref="confirmFormRef" :model="confirmFormEntity" :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: 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="confirmFormEntity.vehicleId" size="default"
ref="confirmVehicleId" v-on:keyup.enter="changeFocus()"
clearable></el-input>
</div> </div>
</div> </div>
<div style="display: flex; flex-direction: column;"> <div style="display: flex; flex-direction: column;">
<div class="display-title-div"> <div class="display-title-div">
<span class="display-title-text">实物数量</span> <span class="display-title-text">料号</span>
</div>
<div class="display-form-div">
<el-input v-model="confirmFormEntity.goodsId" size="default"
ref="confirmGoodsId" v-on:keyup.enter="changeFocus()"
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>
<div style="display: flex; margin-top: 20px;"> <div style="display: flex; margin-top: 20px;">
<div class="display-form-div-left"> <div class="display-form-div-left">
<el-input-number v-model.number="workFormEntity.realNum" ref="realNum" <el-input-number v-model.number="confirmFormEntity.confirmNum"
controls-position="right" :min="0" /> ref="confirmNum" v-on:keyup.enter="changeFocus()" controls-position="right" :min="0" />
</div> </div>
<div class="display-form-div-right"> <div class="display-form-div-right">
<span class="display-form-text-right">PC</span> <span class="display-form-text-right">PC</span>
@ -71,9 +121,9 @@
</div> </div>
</div> </div>
<div style="margin: 10px;"> <div style="margin: 10px;">
<div class="arrow" @click="confirmTask()"> <div class="arrow" @click="invenConfirm()" style="height: 270px;">
<span <span
style="margin-left: 25px; align-self: center; font-weight: bold;font-size: 45px; writing-mode: vertical-lr;">完成确认</span> style="margin-left: 25px; align-self: center; font-weight: bold;font-size: 45px; writing-mode: vertical-lr;">确认盘点</span>
</div> </div>
</div> </div>
</div> </div>
@ -86,11 +136,11 @@
<script setup> <script setup>
import store from '@/store' import store from '@/store'
import { getWorkByStandAndGoods, confirmFinishWork, queryFinishByStandAndGoods } from '@/api/task' import { inventoryOut, getCurrentGoodsInventory, inventoryConfirmBack } from '@/api/inventory'
import { replaceEnglishAndNumberIGAI } from '@/utils/formatter'
import { reactive, ref } from 'vue' import { reactive, ref } from 'vue'
import { errorBox } from '@/utils/myMessageBox.js' import { errorBox } from '@/utils/myMessageBox.js'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import UploadExcelInventoryList from '@/excel/UploadExcelInventoryList.vue'
import zhCn from 'element-plus/dist/locale/zh-cn.mjs' import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
</script> </script>
@ -100,124 +150,110 @@ export default {
data() { data() {
return { return {
standId: store.getters.getStandId, standId: store.getters.getStandId,
timer: '',
labelPosition: 'top', labelPosition: 'top',
workFormRef: ref(), workFormRef: ref(),
workFormEntity: reactive({ workFormEntity: reactive({
goodsId: '', goodsId: '',
planPickNum: 0, vehicleId: ''
remainNumOrigin: null,
remainNumReal: null,
remark: '',
finishedRows: 0,
totalRows: 0,
finishedCounts: 0,
totalCounts: 0,
tip: ''
}), }),
rules: reactive({ rules: reactive({
goodsId: [ goodsId: [
{ required: true, message: '请输入料号' } { required: true, message: '请输入料号' }
] ]
}), }),
inventoryGoodsDetails: [],
confirmFormRef: ref(),
confirmFormEntity: reactive({
goodsId: '',
vehicleId: '',
confirmNum: null
}),
} }
}, },
mounted() { mounted() {
this.$refs.goodsId.focus() this.$refs.goodsId.focus()
this.timer = setInterval(() => {
this.queryFinish()
}, 2000)
}, },
beforeUnmount() { beforeUnmount() {
clearInterval(this.timer)
}, },
methods: { methods: {
// //
getCurrentWorkInfo() { getCurrentInvInfo() {
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.planPickNum = response.returnData.planPickNum
this.workFormEntity.remainNumOrigin = response.returnData.remainNumOrigin
this.workFormEntity.remainNumReal = response.returnData.remainNumReal
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()
errorBox(response.message)
}
}).catch(err => {
console.log(err)
this.resetForms()
errorBox('查询工作信息错误')
})
},
//
queryFinish() {
if (this.workFormEntity.goodsId == '') { if (this.workFormEntity.goodsId == '') {
return return
} }
const request = { const request = {
standId: this.standId, goodsId: this.workFormEntity.goodsId,
goodsId: this.workFormEntity.goodsId userName: store.getters.getUserName
} }
queryFinishByStandAndGoods(request).then(res => { getCurrentGoodsInventory(request).then(res => {
const response = res.data const response = res.data
if (response.code == 0) { if (response.code == 0) {
if (response.returnData != null) { this.inventoryGoodsDetails = response.returnData
this.workFormEntity.tip = response.returnData.tip } else {
} this.inventoryGoodsDetails = []
this.resetForms() errorBox(response.message)
ElMessage.success(response.message)
} }
}).catch(err => { }).catch(err => {
console.log(err) console.log(err)
this.inventoryGoodsDetails = []
errorBox('查询盘点信息错误。')
}) })
}, },
// //
resetForms() { resetWorkForms() {
this.workFormEntity = reactive({ this.workFormEntity = reactive({
goodsId: '', goodsId: '',
planPickNum: 0, vehicleId: ''
remainNumOrigin: null,
remainNumReal: null,
remark: '',
finishedRows: 0,
totalRows: 0,
finishedCounts: 0,
totalCounts: 0,
tip: ''
}) })
this.$refs.goodsId.focus() this.$refs.goodsId.focus()
}, },
resetConfirmForms() {
this.confirmFormEntity = reactive({
vehicleId: '',
goodsId: '',
confirmNum: null
})
this.$refs.confirmGoodsId.focus()
},
invenOut() {
if (this.workFormEntity.goodsId == '') {
errorBox('料号不可缺少')
return
}
const request = {
goodsId: this.workFormEntity.goodsId,
vehicleId: this.confirmFormEntity.vehicleId,
userName: store.getters.getUserName
}
inventoryOut(request).then(res => {
const response = res.data
if (response.code == 0) {
this.resetWorkForms()
ElMessage.success(response.message)
} else {
errorBox(response.message)
}
}).catch(err => {
console.log(err)
errorBox('下发盘点时发生异常。')
})
},
// //
confirmTask() { invenConfirm() {
if (this.standId == '' || this.workFormEntity.goodsId == '') { if (this.confirmFormEntity.goodsId == '' || this.confirmFormEntity.vehicleId == '' || this.confirmFormEntity.confirmNum == null || this.confirmFormEntity.confirmNum == '') {
errorBox('站台号和料号不可缺少') errorBox('料号、箱号、确认数量不可缺少。')
return return
} }
const confirmParams = { const confirmParams = {
standId: this.standId, goodsId: this.confirmFormEntity.goodsId,
goodsId: this.workFormEntity.goodsId, vehicleId: this.confirmFormEntity.vehicleId,
remainNumOrigin: this.workFormEntity.remainNumOrigin, confirmNum: this.confirmFormEntity.confirmNum,
remainNumReal: this.workFormEntity.remainNumReal userName: store.getters.getUserName
} }
confirmFinishWork(confirmParams).then(res => { inventoryConfirmBack(confirmParams).then(res => {
const response = res.data const response = res.data
if (response.code == 0) { if (response.code == 0) {
if (response.returnData != null) { this.resetConfirmForms()
this.workFormEntity.tip = response.returnData.tip
}
this.resetForms()
ElMessage.success(response.message) ElMessage.success(response.message)
} else { } else {
errorBox(response.message) errorBox(response.message)
@ -226,7 +262,22 @@ export default {
console.log(err) console.log(err)
errorBox('确认时发生异常') errorBox('确认时发生异常')
}) })
} },
changeFocus() {
this.confirmFormEntity.vehicleId = replaceEnglishAndNumberIGAI(this.confirmFormEntity.vehicleId)
if (this.confirmFormEntity.vehicleId == '' || this.confirmFormEntity.vehicleId == null || this.confirmFormEntity.vehicleId == undefined) {
this.$refs.confirmVehicleId.focus()
return
}
if (this.confirmFormEntity.goodsId == '' || this.confirmFormEntity.goodsId == null || this.confirmFormEntity.goodsId == undefined) {
this.$refs.confirmGoodsId.focus()
return
}
if (this.confirmFormEntity.confirmNum == null || this.confirmFormEntity.confirmNum == undefined || this.confirmFormEntity.confirmNum == '') {
this.$refs.confirmNum.focus()
return
}
},
} }
} }
</script> </script>
@ -276,7 +327,7 @@ export default {
#309330 50%, #309330 50%,
#309330 100%) bottom right; #309330 100%) bottom right;
background-size: 100% 50%; background-size: 100% 50%;
height: 400px; /* height: 400px; */
width: 250px; width: 250px;
background-repeat: no-repeat; background-repeat: no-repeat;
display: inline-flex; display: inline-flex;
@ -398,4 +449,16 @@ export default {
font-weight: bold; font-weight: bold;
font-size: 25px; font-size: 25px;
} }
.goods-list-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;
}
</style> </style>