Browse Source

增加先进先出直接补料2024/7/29 11:41:24

pull/1/head
zhang_li 5 months ago
parent
commit
d716fe237e
  1. 11
      src/common/style/new_style.css
  2. 4
      src/mycomponents/balance/balance.vue
  3. 11
      src/mycomponents/balance/balanceSelect.vue
  4. 2
      src/mycomponents/record/recordComDetailCard.vue
  5. 4
      src/mycomponents/scan/winComScanBalance.vue
  6. 858
      src/pages/repleinsh/record/repleinshRecord.vue

11
src/common/style/new_style.css

@ -2088,7 +2088,12 @@ button::after {
vertical-align: middle;
margin-right:12rpx
}
.card_item_code {
color: #329362;
padding: 5px;
font-size: 30rpx;
}
.card_packing_code {
color: #3315EB;
padding: 5px;
@ -2152,10 +2157,10 @@ button::after {
font-size: 32rpx;
}
.card_item_code {
/* .card_item_code {
color: #F1A532;
padding: 5px;
}
} */
.card_product_date {
color: #329362;

4
src/mycomponents/balance/balance.vue

@ -19,9 +19,9 @@
<image style="width: 26rpx; height: 26rpx; margin-top: 40rpx" src="/static/icons/icon_copy.svg" alt="" @click="copy" />
</view>
</view>
<view class="" v-if="dataContent.inventoryStatus">
<!-- <view class="" v-if="dataContent.inventoryStatus">
<move-status :fromInventoryStatus="dataContent.inventoryStatus"> </move-status>
</view>
</view> -->
</view>
</view>
<!-- <u-line></u-line> -->

11
src/mycomponents/balance/balanceSelect.vue

@ -7,6 +7,13 @@
<view class="popinpop count_shadow" style="width: 90vw; margin: 20rpx 20rpx 30rpx 20rpx" v-for="(item, index) in balanceItems" :key="item.id" @click="callback(item)">
<balance :dataContent="item" :isShowStatus="false"></balance>
</view>
<view class="page-footer">
<view class="uni-flex space-between" style="width: 100%">
<!-- <view class=" uni-flex uni-row"> -->
<button class="btn_single_reject" hover-class="btn_commit_after" @click="close">关闭</button>
<!-- </view> -->
</view>
</view>
</scroll-view>
</u-popup>
</template>
@ -30,6 +37,10 @@ const callback = (item) => {
emit('onSelectItem', item)
show.value = false
}
const close = () => {
show.value = false
}
const emit = defineEmits(['onSelectItem'])
defineExpose({ openPopup })
</script>

2
src/mycomponents/record/recordComDetailCard.vue

@ -40,7 +40,7 @@ const props = defineProps({
isShowStatus: {
type: Boolean,
default: false
default: true
},
isShowFromLocation: {

4
src/mycomponents/scan/winComScanBalance.vue

@ -114,6 +114,10 @@ export default {
areaType: this.fromLocationAreaTypeList,
bussinessCode: this.bussinessCode
}
uni.showLoading({
title: '查询中',
mask: true
})
getBalanceByParams(params)
.then((res) => {
uni.hideLoading()

858
src/pages/repleinsh/record/repleinshRecord.vue

@ -1,465 +1,519 @@
<template>
<view class="page-wraper">
<view class="">
<com-blank-view @goScan="showRequestPopup" v-if="detailSource.length == 0"></com-blank-view>
<com-blank-view @goScan="getBusinessType" v-if="recommendList.length == 0"></com-blank-view>
</view>
<view class="page-wraper" v-if="detailSource.length > 0">
<view class="page-wraper" v-if="recommendList.length > 0">
<view class="page-header">
<view class="header_item" style="font-size: 35rpx; padding: 10rpx">
<uni-collapse ref="collapse">
<uni-collapse-item :open="true">
<template v-slot:title>
<view class="card_itemName" style="padding: 3px 5px; font-size: 28rpx"> 先进先出推荐信息 </view>
</template>
<view class="detail-list" v-for="(recommend, index) in recommendList" :key="recommend.id">
<view class="card_view">
<text class="card_item_code">物料代码</text>
<text class="card_content">{{ recommend.itemCode }}</text>
</view>
<balance :dataContent="recommend" :isShowStatus="false"></balance>
</view>
</uni-collapse-item>
</uni-collapse>
</view>
</view>
<view class="page-main">
<scroll-view scroll-y="true" class="page-main-scroll">
<view class="" v-for="(toLocation, index) in detailSource" :key="index">
<view class="u-p-t-20" style="background: white">
<view class="page-header" style="background-color: #f5f5f5 !important; margin: 0px 20rpx">
<view class="text_lightblue fontsize-16">目标库位:{{ toLocation.toLocationCode }}</view>
</view>
<com-issue-detail-card ref="comRepleinshDetailCard" :dataContent="toLocation" @updateData="updateData"> </com-issue-detail-card>
<view class="detail-list" v-for="(item, index) in detailSource" :key="item.id">
<view class="">
<record-com-detail-card :dataContent="item" :index="index" :settingParam="dataContent" :isShowFromLocation="true" @removeItem="removeItem(index, item)" :isShowToLocation="false" @updateData="updateData" @removePack="removePack"> </record-com-detail-card>
</view>
<!-- <view class='split_line'></view> -->
</view>
</scroll-view>
</view>
<view class="page-footer">
<view class="uni-flex u-col-center space-between padding_20" style="background-color: ghostwhite; width: 100%">
<button class="btn_single_commit" style="flex: 1" hover-class="btn_commit_after" @click="submit">提交</button>
<view class="uni-flex u-col-center space-between padding_10" style="background-color: ghostwhite; width: 100%">
<view class="">
<requiredLocation v-if="showToLoaction" title="目标库位" :locationCode="toLocationCode" @getLocation="getToLocationCode" :locationAreaTypeList="toLocationAreaTypeList"> </requiredLocation>
</view>
<view class="uni-flex uni-row">
<button class="btn_single_commit" hover-class="btn_commit_after" @click="commit">提交</button>
</view>
</view>
</view>
<win-scan-button @goScan="openScanPopup"></win-scan-button>
</view>
<com-repleinsh-request-popup ref="comRepleinshRequestPopupRef" :toLocationAreaTypeList="toLocationAreaTypeList" @confirm="requestConfirm" :itemCodeTypeList="itemCodeTypeList"> </com-repleinsh-request-popup>
<win-scan-button v-if="detailSource.length > 0" @goScan="openScanDetailPopup"></win-scan-button>
<com-scan-issue-pack ref="comScanIssuePackRef" @closeScan="closeScan" @updateData="updateData"> </com-scan-issue-pack>
<com-message ref="comMessageRef" />
<winComScanBalance ref="scanPopup" @getBalance="getScanResult" :bussinessCode="businessTypeCode"> </winComScanBalance>
<comMessage ref="comMessage"></comMessage>
</view>
</template>
<script setup lang="ts">
import { ref, getCurrentInstance, nextTick } from 'vue'
import { onLoad, onNavigationBarButtonTap, onReady, onReachBottom, onPullDownRefresh } from '@dcloudio/uni-app'
import { repleinshRecordSubmit, getBalanceByBatchOffShelf } from '@/api/request2.js'
<script>
import { repleinshRecordSubmit, validateItemAndLocation, getPutawayRecommendLocation, getBalanceByFilter, getBalanceByBatchOffShelf } from '@/api/request2.js'
import { calc } from '@/common/calc.js'
import { goHome, updateTitle, getCurrDateTime, getPackingNumberAndBatchByList, deepCopyData } from '@/common/basic.js'
import { goHome, getCurrDateTime, getPackingNumberAndBatch } from '@/common/basic.js'
import { calc } from '@/common/calc.js'
import { getInventoryStatusDesc, getDirectoryItemArray } from '@/common/directory.js'
import { getDetailOption, getDetailRemoveOption, getDetailEditRemoveOption } from '@/common/array.js'
import { getBusinessType, createItemInfo, createDetailInfo, calcHandleQty } from '@/common/record.js'
import { getBusinessType, calcHandleQty } from '@/common/record.js'
import { getDataSource } from '@/pages/issue/js/issue.js'
import { getManagementPrecisions } from '@/common/balance.js'
import { getManagementPrecisions, getPrecisionStrategyList, getPrecisionStrategyParams } from '@/common/balance.js'
import winScanButton from '@/mycomponents/scan/winScanButton.vue'
import winScanPack from '@/mycomponents/scan/winScanPack.vue'
import requiredLocation from '@/mycomponents/location/requiredLocation.vue'
import comBlankView from '@/mycomponents/common/comBlankView.vue'
import winScanLocation from '@/mycomponents/scan/winScanLocation.vue'
import winScanPackAndLocation from '@/mycomponents/scan/winScanPackAndLocation.vue'
import recordComDetailCard from '@/mycomponents/record/recordComDetailCard.vue'
import comRepleinshRequestPopup from '@/pages/repleinsh/coms/comRepleinshRequestPopup.vue'
import comIssueDetailCard from '@/pages/issue/coms/comIssueDetailCard.vue'
import comScanIssuePack from '@/pages/issue/coms/comScanIssuePack.vue'
import { useCountStore } from '@/store'
// store
const store = useCountStore()
const { proxy } = getCurrentInstance()
const id = ref('')
const receiptJob = ref({})
const subList = ref([]) // subList
const detailSource = ref([]) //
const businessTypeInfo = ref({})
const fromLocationCode = ref('')
const toLocationCode = ref('')
const toLocationAreaTypeList = ref([])
const allowModifyLocation = ref(false)
const businessType = ref({})
const requestList = ref([])
const managementList = ref([])
const dataContent = ref({})
const itemCodeTypeList = ref([])
const comRepleinshDetailCard = ref()
const comRepleinshRequestPopupRef = ref()
const comScanIssuePackRef = ref()
const comMessageRef = ref()
onLoad((option) => {
const typeCode = 'Repleinment'
getBusinessType(typeCode, (res) => {
if (res.success) {
businessType.value = res.businessType
itemCodeTypeList.value = res.itemCodeTypeList
toLocationAreaTypeList.value = res.toLocationAreaTypeList
showRequestPopup()
} else {
showErrorMessage(res.message)
import winComScanBalance from '@/mycomponents/scan/winComScanBalance.vue'
import balance from '@/mycomponents/balance/balance.vue'
export default {
components: {
winScanButton,
winScanPack,
requiredLocation,
comBlankView,
winScanLocation,
winScanPackAndLocation,
recordComDetailCard,
winComScanBalance,
balance
},
data() {
return {
id: '',
dataContent: {}, //
detailSource: [], //
fromLocationCode: '',
fromLocationAreaTypeList: [],
toLocationAreaTypeList: [],
inInventoryStatus: '', //
outInventoryStatus: '', //
businessType: {},
showToLoaction: true,
recommendLocationList: [], //
fromWarehouseCode: '', //
businessTypeCode: 'Repleinment',
toLocationCode: '',
resultData: {},
itemCode: '',
recommendList: []
}
})
})
onNavigationBarButtonTap((e) => {
if (e.index === 0) {
goHome()
}
})
const closeScan = () => {
resizeCollapse()
}
const resizeCollapse = () => {
nextTick((r) => {
comRepleinshDetailCard.value.forEach((r) => {
r.resizeCollapse()
})
})
}
const showRequestPopup = () => {
comRepleinshRequestPopupRef.value.openRequestPopup()
}
//
const requestConfirm = (action, item) => {
if (item.itemCode == '' || item.itemCode == null) return
const request = requestList.value.find((r) => r.itemCode == item.itemCode)
if (request == undefined) {
requestList.value.push(item)
getRecommendInfo(item)
} else {
comMessageRef.value.showQuestionMessage(`已经存在物料[${item.itemCode}]的需求信息,是否要修改?`, (res) => {
if (type == 'itemCode') {
request.qty = item.qty
detailSource.value.forEach((detail) => {
const index = detail.Items.findIndex((r) => {
r.itemCode == item.itemCode
})
detail.Items.splice(index, 1)
})
getRecommendInfo(item)
}
},
onLoad(option) {
uni.setNavigationBarTitle({
title: option.title
})
}
}
const getRecommendInfo = (item) => {
proxy.$modal.loading('加载中...')
getBalanceByBatchOffShelf(item.itemCode, item.qty)
.then((res) => {
if (res.data == null) {
showMessage('未获取到推荐信息')
} else {
if (res.data.length > 0) {
res.data.forEach((r) => {
r.toLocationCode = item.toLocation.code
r.itemName = item.itemName
r.uom = item.uom
subList.value.push(r)
})
detailSource.value = getDataSource(detailSource.value, subList.value)
//
detailSource.value.forEach((detail) => {
detail.Items.forEach((i) => {
const request = requestList.value.find((r) => r.itemCode == i.itemCode)
i.qty = request.qty
})
})
// that.resizeCollapse();
this.clear()
this.getBusinessType()
},
//
onNavigationBarButtonTap(e) {
if (e.index === 0) {
goHome()
}
},
//
onBackPress(e) {},
onPullDownRefresh() {},
mounted() {},
methods: {
getBusinessType() {
getBusinessType(this.businessTypeCode, (res) => {
if (res.success) {
this.businessType = res.businessType
this.fromInventoryStatuses = getDirectoryItemArray(res.fromInventoryStatuses)
this.fromLocationAreaTypeList = res.fromLocationAreaTypeList
this.openScanPopup()
} else {
showMessage('列表数据为0')
this.showErrorMessage(res.message)
}
uni.hideLoading()
})
},
getBalance(label, packageInfo, callback) {
const filters = []
if (packageInfo.parentNumber) {
const packingNumber = `${packageInfo.parentNumber},${label.packingNumber}`
filters.push({
column: 'packingNumber',
action: 'in',
value: packingNumber
})
} else {
filters.push({
column: 'packingNumber',
action: '==',
value: label.packingNumber
})
}
})
.catch((error) => {
uni.hideLoading()
showErrorMessage(error)
})
}
const caclcQty = () => {
const totalQty = 0
detailSource.value.subList.forEach((res) => {
totalQty.value = calc.add(totalQty, res.qty)
})
detailSource.value.totalQty = totalQty
}
filters.push({
column: 'itemCode',
action: '==',
value: label.itemCode
})
filters.push({
column: 'batch',
action: '==',
value: label.batch
})
const openScanDetailPopup = () => {
const datacontent = {}
//
// Object.assign(datacontent, this.detailSource);
const dataContent1 = {
allowModifyPackingNumber: 'FALSE',
outInventoryStatuses: fromInventoryStatuses.value
}
comScanIssuePackRef.value.openScanPopup(detailSource.value, dataContent1)
}
if (this.fromInventoryStatuses != null && this.fromInventoryStatuses != '') {
filters.push({
column: 'inventoryStatus',
action: 'in',
value: this.fromInventoryStatuses
})
}
const updateData = (record) => {
const requestLocation = detailSource.value.find((r) => r.toLocationCode == record.toLocationCode)
const item = requestLocation.Items.find((r) => r.itemCode == record.itemCode)
let itemHandleQty = 0
if (item != undefined) {
item.Locations.forEach((l) => {
const batch = l.Batchs.find((b) => (b.packingNumber == record.packingNumber || b.packingNumber == null || b.packingNumber == '') && b.batch == record.batch)
let handleQty = 0
if (batch != undefined) {
batch.Records.forEach((res) => {
handleQty = calc.add(handleQty, res.qty)
const params = {
filters,
pageNo: 1,
pageSize: 100
}
getBalanceByFilter(params)
.then((res) => {
callback(res.data)
})
.catch((err) => {
this.showErrorMessage(err.message)
})
batch.handleQty = handleQty
itemHandleQty = calc.add(itemHandleQty, handleQty)
},
getScanResult(result) {
const that = this
const pack = result.package
if (that.recommendList.length > 0) {
const recommend = that.recommendList.filter((r) => r.itemCode == pack.itemCode)
if (recommend.length == 0) {
this.showErrorMessage(`物料代码【${pack.itemCode}】不在推荐列表中`)
} else {
const batch = recommend.find((r) => r.batch == pack.batch)
if (batch == undefined) {
that.showErrorMessage(`扫描的批次【${pack.batch}】,不是系统推荐的批次,不满足系统的先进先出规则,请重新扫描物料`)
} else {
this.setData(result)
}
}
} else {
this.getRecommendInfo(result)
}
})
}
resizeCollapse()
// item.handleQty=itemHandleQty;
// this.closeScan();
}
},
const calcHandleQty = () => {
for (const item of detailSource.value) {
item.qty = 0
for (const detail of item.subList) {
if (detail != undefined) {
item.qty = calc.add(item.qty, detail.qty)
getRecommendInfo(result) {
const that = this
uni.showLoading({
title: '加载中...',
mask: true
})
const item = {
itemCode: result.package.itemCode,
qty: result.package.qty
}
getBalanceByBatchOffShelf(item.itemCode, item.qty)
.then((res) => {
if (res.data == null) {
that.showErrorMessage('未获取到推荐信息')
} else {
if (res.data.length > 0) {
that.recommendList = res.data
that.recommendList.forEach((r) => (r.locationCode = r.fromLocationCode))
const recommendInfo = res.data[0]
if (recommendInfo.batch != result.package.batch) {
that.showErrorMessage(`扫描的批次【${result.package.batch}】,不是系统推荐的批次【${recommendInfo.batch}】,不满足系统的先进先出规则,请重新扫描`)
} else {
this.setData(result)
}
} else {
that.showErrorMessage('未查找到物料的推荐信息')
}
uni.hideLoading()
}
})
.catch((error) => {
uni.hideLoading()
that.showErrorMessage(error)
})
},
setData(result) {
const { balance } = result
const { label } = result
const pack = result.package
if (this.fromLocationCode && this.fromLocationCode != balance.locationCode) {
this.showErrorMessage(`箱码[${balance.packingNumber}批次[${balance.batch}]在库位[${this.fromLocationCode}]没有库存余额`)
return
}
}
}
}
const removeItem = (index, item) => {
detailSource.value.splice(index, 1)
}
const removePack = () => {
for (let i = 0; i < detailSource.value.length; i++) {
const item = detailSource.value[i]
if (item.subList.length == 0) {
detailSource.value.splice(i, 1)
}
}
updateData()
}
const item = this.detailSource.find((res) => {
if (res.itemCode == balance.itemCode) {
return res
}
})
if (item == undefined) {
if (this.itemCode != '' && this.itemCode != balance.itemCode) {
this.showErrorMessage(`请扫描物料为【${this.itemCode}】的箱码`)
return
}
if (this.fromWarehouseCode == '') {
this.fromWarehouseCode = balance.warehouseCode
}
const itemp = createItemInfo(balance, pack)
const newDetail = createDetailInfo(balance, pack) //
newDetail.parentNumber = pack.parentNumber
newDetail.packingNumber = pack.number
newDetail.packUnit = pack.packUnit
newDetail.packQty = pack.packQty
if (balance.lableQty) {
newDetail.handleQty = balance.lableQty
}
itemp.subList.push(newDetail)
this.detailSource.push(itemp)
this.itemCode = balance.itemCode
this.fromLocationCode = balance.locationCode
this.scanPopupGetFocus()
} else {
const detail = item.subList.find((r) => {
if (r.packingNumber == pack.number && r.batch == balance.batch && r.locationCode == balance.locationCode && r.inventoryStatus == balance.inventoryStatus) {
return r
}
})
if (detail == undefined) {
const newDetail = createDetailInfo(balance, pack)
newDetail.parentNumber = pack.parentNumber
newDetail.packingNumber = pack.number
newDetail.packUnit = pack.packUnit
newDetail.packQty = pack.packQty
if (balance.lableQty) {
newDetail.handleQty = balance.lableQty
}
item.subList.push(newDetail)
this.scanPopupGetFocus()
} else if (detail.scaned == true) {
this.showErrorMessage(`箱码[${detail.packingNumber}批次[${balance.batch}]已经在列表中`)
}
}
calcHandleQty(this.detailSource)
},
const openScanPopup = () => {
scanPopup.value.openScanPopupForType(fromLocationCode.value, businessType.value)
}
showErrorMessage(message) {
this.$refs.comMessage.showErrorMessage(message, (res) => {
if (res) {
this.scanPopupGetFocus()
}
})
},
updateData() {
calcHandleQty(this.detailSource)
for (let i = 0; i < this.detailSource.length; i++) {
const item = this.detailSource[i]
if (item.qty == 0) {
this.detailSource.splice(i, 1)
}
}
this.$forceUpdate()
},
removeItem(index, item) {
this.detailSource.splice(index, 1)
this.updateData()
},
removePack() {
for (let i = 0; i < this.detailSource.length; i++) {
const item = this.detailSource[i]
if (item.subList.length == 0) {
this.detailSource.splice(i, 1)
}
}
this.updateData()
},
const showFromLocationPopup = () => {
nextTick(() => {
scanLocationCode.value.openScanPopup()
})
}
openScanPopup() {
if (this.businessType) {
this.$refs.scanPopup.openScanPopup(this.businessType)
} else {
this.getBusinessType()
}
},
const closeScanPopup = () => {
if (scanPopup.value != undefined) {
scanPopup.value.closeScanPopup()
}
}
closeScanPopup() {
if (this.$refs.scanPopup) {
this.$refs.scanPopup.closeScanPopup()
}
},
const scanPopupGetFocus = () => {
if (scanPopup.value != undefined) {
scanPopup.value.getfocus()
}
}
scanPopupGetFocus() {
if (this.$refs.scanPopup) {
this.$refs.scanPopup.getfocus()
}
},
const submit = () => {
if (getScanCount()) {
showErrorMessage('当前扫描数为0,请先扫描在提交')
return
}
uni.showLoading({
title: '提交中....',
mask: true
})
//
const itemCodes = []
const locationCode = detailSource.value[0].toLocationCode
detailSource.value.forEach((toLocation) => {
toLocation.Items.forEach((item) => {
itemCodes.push(item.itemCode)
})
})
//
getManagementPrecisions(itemCodes, locationCode, (res) => {
if (res.success) {
managementList.value = res.list
submitJob()
} else {
uni.hideLoading()
showErrorMessage(res.message)
}
})
}
scanLocationCode(location, code) {
this.toLocationCode = code
},
const submitJob = () => {
const params = setParams()
repleinshRecordSubmit(params)
.then((res) => {
uni.hideLoading()
if (res.data) {
showCommitSuccessMessage(`提交成功<br>生成补料记录<br>${res.data}`)
} else {
showErrorMessage(`提交失败[${res.msg}]`)
commit() {
if (this.toLocationCode == '') {
this.showMessage('请输入目标库位')
return
}
})
.catch((error) => {
uni.hideLoading()
showErrorMessage(error)
})
}
const setParams = () => {
const subList = []
const createTime = getCurrDateTime()
const creator = store.id
detailSource.value.forEach((toLocationCode) => {
toLocationCode.Items.forEach((item) => {
item.Locations.forEach((fromLocation) => {
fromLocation.Batchs.forEach((batch) => {
const subItem = batch.detail
subItem.recordList = []
if (batch.Records.length > 0) {
batch.Records.forEach((r) => {
const record = {}
record.handleQty = r.qty
record.fromPackingNumber = r.packingNumber
record.fromBatch = r.batch
record.fromContainerNumber = r.ContainerNumber
record.toContainerNumber = r.ContainerNumber
record.toInventoryStatus = r.inventoryStatus
record.toLocationCode = subItem.toLocationCode
record.fromLocationCode = fromLocation.fromLocationCode
record.supplierCode = r.supplierCode
// 使
const info = getPackingNumberAndBatch(this.managementList, r.itemCode, r.packingNumber, r.batch)
record.toPackingNumber = info.packingNumber
record.toBatch = info.batch
subItem.recordList.push(record)
})
subList.push(subItem)
}
if (this.detailSource.length == 0) {
this.showMessage('请扫描要发货的物料')
return
}
this.detailSource.forEach((item) => {
item.subList.forEach((detail) => {
detail.toLocationCode = this.toLocationCode
detail.fromLocation = this.fromLocationCode
})
})
})
})
dataContent.value.subList = subList
dataContent.value.createTime = createTime
dataContent.value.creator = creator
return dataContent.value
}
uni.showLoading({
title: '提交中....',
mask: true
})
const getScanCount = () => {
let scanCount = 0
const subList = []
detailSource.value.forEach((toLocationCode) => {
toLocationCode.Items.forEach((item) => {
item.Locations.forEach((fromLocation) => {
fromLocation.Batchs.forEach((batch) => {
const subItem = batch.detail
subItem.recordList = []
if (batch.Records.length > 0) {
batch.Records.forEach((r) => {
const record = {}
record.handleQty = r.qty
subItem.recordList.push(record)
//
const precisionStrategyParams = getPrecisionStrategyParams(this.detailSource)
// 2:
getPrecisionStrategyList(precisionStrategyParams, (res) => {
if (res.success) {
this.managementList = res.list
const params = this.setRecordParams()
console.log('提交参数', JSON.stringify(params))
repleinshRecordSubmit(params)
.then((res) => {
uni.hideLoading()
if (res.data) {
this.showCommitSuccessMessage(`提交成功<br>生成直接补料记录<br>${res.data}`)
} else {
this.showErrorMessage(`提交失败[${res.msg}]`)
}
})
.catch((error) => {
uni.hideLoading()
this.showErrorMessage(error)
})
subList.push(subItem)
} else {
uni.hideLoading()
this.showErrorMessage(res.message)
}
})
},
setRecordParams() {
const subList = []
const creator = this.$store.state.user.id
this.detailSource.forEach((item) => {
item.subList.forEach((detail) => {
if (detail.scaned) {
const info = getPackingNumberAndBatchByList(this.managementList, detail.itemCode, detail.packingNumber, detail.toLocationCode, detail.batch)
const submitItem = deepCopyData(detail)
submitItem.toPackingNumber = info.packingNumber
submitItem.toBatch = info.batch
submitItem.toContainerNumber = detail.containerNumber
submitItem.fromPackingNumber = info.packingNumber
submitItem.fromBatch = info.batch
submitItem.fromContainerNumber = detail.containerNumber
submitItem.fromLocationCode = detail.locationCode
submitItem.toLocationCode = detail.toLocationCode
// detail.toInventoryStatus = detail.inventoryStatus
// detail.toLocationCode = detail.toLocationCode
submitItem.qty = detail.handleQty
submitItem.package = ''
submitItem.recordList = [
{
toInventoryStatus: detail.inventoryStatus,
fromPackingNumber: info.packingNumber,
fromParentPackingNumber: detail.parentNumber,
fromBatch: info.batch,
toPackingNumber: info.packingNumber,
toBatch: info.batch,
fromLocationCode: detail.locationCode,
toLocationCode: detail.toLocationCode,
handleQty: detail.handleQty,
fromPackUnit: detail.packUnit,
toPackUnit: detail.packUnit,
fromPackQty: detail.packQty,
toPackQty: detail.packQty
}
]
subList.push(submitItem)
}
})
})
})
})
return (scanCount = subList.length)
}
if (subList.length > 0) {
this.dataContent.toWarehouseCode = subList[0].toWarehouseCode
}
this.dataContent.subList = subList
this.dataContent.creator = creator
this.dataContent.fromWarehouseCode = this.fromWarehouseCode
return this.dataContent
},
showMessage(message) {
this.$refs.comMessage.showMessage(message, (res) => {
if (res) {
}
})
},
showScanMessage(message) {
this.$refs.comMessage.showScanMessage(message)
},
afterCloseMessage() {
this.scanPopupGetFocus()
},
closeScanMessage() {
this.scanPopupGetFocus()
},
getToLocationCode(location, code) {
if (this.fromLocationCode == code) {
uni.showToast({
title: `来源库位[${this.fromLocationCode}]不能与目标库位[${code}]一致`,
duration: 2000
})
return
}
this.toLocationCode = code
},
const showMessage = (message) => {
comMessageRef.value.showMessage(message, (res) => {
if (res) {
}
})
}
const showErrorMessage = (message) => {
comMessageRef.value.showErrorMessage(message, (res) => {
if (res) {
showCommitSuccessMessage(hint) {
this.$refs.comMessage.showSuccessMessage(hint, (res) => {
this.clear()
})
},
clear() {
this.fromLocationCode = ''
this.fromWarehouseCode = ''
this.toWarehouseCode = ''
this.detailSource = []
this.toLocationCode = ''
this.itemCode = ''
}
})
}
const showScanMessage = (message) => {
comMessageRef.value.showScanMessage(message)
}
const afterCloseMessage = () => {
scanPopupGetFocus()
}
const closeScanMessage = () => {
scanPopupGetFocus()
}
const getLocation = (location, code) => {
getToLocationCode(location, code)
}
const getFromLocationCode = (location, code) => {
fromLocationCode.value = code
openScanPopup()
}
const getToLocationCode = (location, code) => {
// if (this.fromLocationCode == code) {
// uni.showToast({
// title: "[" + this.fromLocationCode + "][" + code + "]",
// duration: 2000
// })
// return
// }
toLocationCodeInfo.value = location
toLocationCode.value = code
}
const showCommitSuccessMessage = (hint) => {
comMessageRef.value.showSuccessMessage(hint, (res) => {
clearData()
})
}
const clearData = () => {
fromLocationCode.value = ''
detailSource.value = []
requestList.value = []
dataContent.value = {}
managementList.value = []
}
}
</script>
<style scoped lang="scss">
page {
width: 100%;
height: 100%;
background-color: #fff;
}
.page-wraper {
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
}
.page-main {
flex: 1;
position: relative;
}
.page-main-scroll {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
}
.page-main-list {
/* height: 80rpx;
line-height: 80rpx; */
text-align: center;
background: #e0e0e0;
}
</style>
<style scoped lang="scss"></style>

Loading…
Cancel
Save