Browse Source

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

pull/1/head
张立 7 months ago
parent
commit
d716fe237e
  1. 9
      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

9
src/common/style/new_style.css

@ -2089,6 +2089,11 @@ button::after {
margin-right:12rpx margin-right:12rpx
} }
.card_item_code {
color: #329362;
padding: 5px;
font-size: 30rpx;
}
.card_packing_code { .card_packing_code {
color: #3315EB; color: #3315EB;
padding: 5px; padding: 5px;
@ -2152,10 +2157,10 @@ button::after {
font-size: 32rpx; font-size: 32rpx;
} }
.card_item_code { /* .card_item_code {
color: #F1A532; color: #F1A532;
padding: 5px; padding: 5px;
} } */
.card_product_date { .card_product_date {
color: #329362; 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" /> <image style="width: 26rpx; height: 26rpx; margin-top: 40rpx" src="/static/icons/icon_copy.svg" alt="" @click="copy" />
</view> </view>
</view> </view>
<view class="" v-if="dataContent.inventoryStatus"> <!-- <view class="" v-if="dataContent.inventoryStatus">
<move-status :fromInventoryStatus="dataContent.inventoryStatus"> </move-status> <move-status :fromInventoryStatus="dataContent.inventoryStatus"> </move-status>
</view> </view> -->
</view> </view>
</view> </view>
<!-- <u-line></u-line> --> <!-- <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)"> <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> <balance :dataContent="item" :isShowStatus="false"></balance>
</view> </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> </scroll-view>
</u-popup> </u-popup>
</template> </template>
@ -30,6 +37,10 @@ const callback = (item) => {
emit('onSelectItem', item) emit('onSelectItem', item)
show.value = false show.value = false
} }
const close = () => {
show.value = false
}
const emit = defineEmits(['onSelectItem']) const emit = defineEmits(['onSelectItem'])
defineExpose({ openPopup }) defineExpose({ openPopup })
</script> </script>

2
src/mycomponents/record/recordComDetailCard.vue

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

4
src/mycomponents/scan/winComScanBalance.vue

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

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

@ -1,465 +1,519 @@
<template> <template>
<view class="page-wraper"> <view class="page-wraper">
<view class=""> <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>
<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"> <view class="page-main">
<scroll-view scroll-y="true" class="page-main-scroll"> <scroll-view scroll-y="true" class="page-main-scroll">
<view class="" v-for="(toLocation, index) in detailSource" :key="index"> <view class="detail-list" v-for="(item, index) in detailSource" :key="item.id">
<view class="u-p-t-20" style="background: white"> <view class="">
<view class="page-header" style="background-color: #f5f5f5 !important; margin: 0px 20rpx"> <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 class="text_lightblue fontsize-16">目标库位:{{ toLocation.toLocationCode }}</view>
</view>
<com-issue-detail-card ref="comRepleinshDetailCard" :dataContent="toLocation" @updateData="updateData"> </com-issue-detail-card>
</view> </view>
<!-- <view class='split_line'></view> -->
</view> </view>
</scroll-view> </scroll-view>
</view> </view>
<view class="page-footer"> <view class="page-footer">
<view class="uni-flex u-col-center space-between padding_20" style="background-color: ghostwhite; width: 100%"> <view class="uni-flex u-col-center space-between padding_10" style="background-color: ghostwhite; width: 100%">
<button class="btn_single_commit" style="flex: 1" hover-class="btn_commit_after" @click="submit">提交</button> <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>
</view> </view>
<win-scan-button @goScan="openScanPopup"></win-scan-button> <win-scan-button @goScan="openScanPopup"></win-scan-button>
</view> </view>
<com-repleinsh-request-popup ref="comRepleinshRequestPopupRef" :toLocationAreaTypeList="toLocationAreaTypeList" @confirm="requestConfirm" :itemCodeTypeList="itemCodeTypeList"> </com-repleinsh-request-popup> <winComScanBalance ref="scanPopup" @getBalance="getScanResult" :bussinessCode="businessTypeCode"> </winComScanBalance>
<win-scan-button v-if="detailSource.length > 0" @goScan="openScanDetailPopup"></win-scan-button> <comMessage ref="comMessage"></comMessage>
<com-scan-issue-pack ref="comScanIssuePackRef" @closeScan="closeScan" @updateData="updateData"> </com-scan-issue-pack>
<com-message ref="comMessageRef" />
</view> </view>
</template> </template>
<script setup lang="ts"> <script>
import { ref, getCurrentInstance, nextTick } from 'vue' import { repleinshRecordSubmit, validateItemAndLocation, getPutawayRecommendLocation, getBalanceByFilter, getBalanceByBatchOffShelf } from '@/api/request2.js'
import { onLoad, onNavigationBarButtonTap, onReady, onReachBottom, onPullDownRefresh } from '@dcloudio/uni-app'
import { repleinshRecordSubmit, 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 { 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 { getManagementPrecisions, getPrecisionStrategyList, getPrecisionStrategyParams } from '@/common/balance.js'
import { getDataSource } from '@/pages/issue/js/issue.js'
import { getManagementPrecisions } from '@/common/balance.js'
import winScanButton from '@/mycomponents/scan/winScanButton.vue' import winScanButton from '@/mycomponents/scan/winScanButton.vue'
import winScanPack from '@/mycomponents/scan/winScanPack.vue' import winScanPack from '@/mycomponents/scan/winScanPack.vue'
import requiredLocation from '@/mycomponents/location/requiredLocation.vue'
import comBlankView from '@/mycomponents/common/comBlankView.vue' import comBlankView from '@/mycomponents/common/comBlankView.vue'
import winScanLocation from '@/mycomponents/scan/winScanLocation.vue'
import winScanPackAndLocation from '@/mycomponents/scan/winScanPackAndLocation.vue' import winScanPackAndLocation from '@/mycomponents/scan/winScanPackAndLocation.vue'
import recordComDetailCard from '@/mycomponents/record/recordComDetailCard.vue' import recordComDetailCard from '@/mycomponents/record/recordComDetailCard.vue'
import comRepleinshRequestPopup from '@/pages/repleinsh/coms/comRepleinshRequestPopup.vue' import winComScanBalance from '@/mycomponents/scan/winComScanBalance.vue'
import comIssueDetailCard from '@/pages/issue/coms/comIssueDetailCard.vue' import balance from '@/mycomponents/balance/balance.vue'
import comScanIssuePack from '@/pages/issue/coms/comScanIssuePack.vue'
import { useCountStore } from '@/store' export default {
// store components: {
const store = useCountStore() winScanButton,
const { proxy } = getCurrentInstance() winScanPack,
const id = ref('') requiredLocation,
const receiptJob = ref({}) comBlankView,
const subList = ref([]) // subList winScanLocation,
const detailSource = ref([]) // winScanPackAndLocation,
const businessTypeInfo = ref({}) recordComDetailCard,
const fromLocationCode = ref('') winComScanBalance,
const toLocationCode = ref('') balance
const toLocationAreaTypeList = ref([]) },
const allowModifyLocation = ref(false) data() {
const businessType = ref({}) return {
const requestList = ref([]) id: '',
const managementList = ref([]) dataContent: {}, //
const dataContent = ref({}) detailSource: [], //
const itemCodeTypeList = ref([]) fromLocationCode: '',
const comRepleinshDetailCard = ref() fromLocationAreaTypeList: [],
const comRepleinshRequestPopupRef = ref() toLocationAreaTypeList: [],
const comScanIssuePackRef = ref() inInventoryStatus: '', //
const comMessageRef = ref() outInventoryStatus: '', //
onLoad((option) => { businessType: {},
const typeCode = 'Repleinment' showToLoaction: true,
getBusinessType(typeCode, (res) => { recommendLocationList: [], //
if (res.success) { fromWarehouseCode: '', //
businessType.value = res.businessType businessTypeCode: 'Repleinment',
itemCodeTypeList.value = res.itemCodeTypeList toLocationCode: '',
toLocationAreaTypeList.value = res.toLocationAreaTypeList resultData: {},
showRequestPopup() itemCode: '',
} else { recommendList: []
showErrorMessage(res.message)
} }
}) },
}) onLoad(option) {
onNavigationBarButtonTap((e) => { uni.setNavigationBarTitle({
if (e.index === 0) { title: option.title
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)
}
}) })
} this.clear()
} this.getBusinessType()
const getRecommendInfo = (item) => { },
proxy.$modal.loading('加载中...') //
getBalanceByBatchOffShelf(item.itemCode, item.qty) onNavigationBarButtonTap(e) {
.then((res) => { if (e.index === 0) {
if (res.data == null) { goHome()
showMessage('未获取到推荐信息') }
} else { },
if (res.data.length > 0) { //
res.data.forEach((r) => { onBackPress(e) {},
r.toLocationCode = item.toLocation.code
r.itemName = item.itemName onPullDownRefresh() {},
r.uom = item.uom
subList.value.push(r) mounted() {},
})
methods: {
detailSource.value = getDataSource(detailSource.value, subList.value) getBusinessType() {
// getBusinessType(this.businessTypeCode, (res) => {
detailSource.value.forEach((detail) => { if (res.success) {
detail.Items.forEach((i) => { this.businessType = res.businessType
const request = requestList.value.find((r) => r.itemCode == i.itemCode) this.fromInventoryStatuses = getDirectoryItemArray(res.fromInventoryStatuses)
i.qty = request.qty this.fromLocationAreaTypeList = res.fromLocationAreaTypeList
}) this.openScanPopup()
})
// that.resizeCollapse();
} else { } 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 = () => { filters.push({
const totalQty = 0 column: 'itemCode',
detailSource.value.subList.forEach((res) => { action: '==',
totalQty.value = calc.add(totalQty, res.qty) value: label.itemCode
}) })
detailSource.value.totalQty = totalQty filters.push({
} column: 'batch',
action: '==',
value: label.batch
})
const openScanDetailPopup = () => { if (this.fromInventoryStatuses != null && this.fromInventoryStatuses != '') {
const datacontent = {} filters.push({
// column: 'inventoryStatus',
// Object.assign(datacontent, this.detailSource); action: 'in',
const dataContent1 = { value: this.fromInventoryStatuses
allowModifyPackingNumber: 'FALSE', })
outInventoryStatuses: fromInventoryStatuses.value }
}
comScanIssuePackRef.value.openScanPopup(detailSource.value, dataContent1)
}
const updateData = (record) => { const params = {
const requestLocation = detailSource.value.find((r) => r.toLocationCode == record.toLocationCode) filters,
const item = requestLocation.Items.find((r) => r.itemCode == record.itemCode) pageNo: 1,
let itemHandleQty = 0 pageSize: 100
if (item != undefined) { }
item.Locations.forEach((l) => { getBalanceByFilter(params)
const batch = l.Batchs.find((b) => (b.packingNumber == record.packingNumber || b.packingNumber == null || b.packingNumber == '') && b.batch == record.batch) .then((res) => {
let handleQty = 0 callback(res.data)
if (batch != undefined) { })
batch.Records.forEach((res) => { .catch((err) => {
handleQty = calc.add(handleQty, res.qty) 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 = () => { getRecommendInfo(result) {
for (const item of detailSource.value) { const that = this
item.qty = 0 uni.showLoading({
for (const detail of item.subList) { title: '加载中...',
if (detail != undefined) { mask: true
item.qty = calc.add(item.qty, detail.qty) })
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) => { const item = this.detailSource.find((res) => {
detailSource.value.splice(index, 1) if (res.itemCode == balance.itemCode) {
} return res
const removePack = () => { }
for (let i = 0; i < detailSource.value.length; i++) { })
const item = detailSource.value[i] if (item == undefined) {
if (item.subList.length == 0) { if (this.itemCode != '' && this.itemCode != balance.itemCode) {
detailSource.value.splice(i, 1) this.showErrorMessage(`请扫描物料为【${this.itemCode}】的箱码`)
} return
} }
updateData() 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 = () => { showErrorMessage(message) {
scanPopup.value.openScanPopupForType(fromLocationCode.value, businessType.value) 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 = () => { openScanPopup() {
nextTick(() => { if (this.businessType) {
scanLocationCode.value.openScanPopup() this.$refs.scanPopup.openScanPopup(this.businessType)
}) } else {
} this.getBusinessType()
}
},
const closeScanPopup = () => { closeScanPopup() {
if (scanPopup.value != undefined) { if (this.$refs.scanPopup) {
scanPopup.value.closeScanPopup() this.$refs.scanPopup.closeScanPopup()
} }
} },
const scanPopupGetFocus = () => { scanPopupGetFocus() {
if (scanPopup.value != undefined) { if (this.$refs.scanPopup) {
scanPopup.value.getfocus() this.$refs.scanPopup.getfocus()
} }
} },
const submit = () => { scanLocationCode(location, code) {
if (getScanCount()) { this.toLocationCode = code
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)
}
})
}
const submitJob = () => { commit() {
const params = setParams() if (this.toLocationCode == '') {
repleinshRecordSubmit(params) this.showMessage('请输入目标库位')
.then((res) => { return
uni.hideLoading()
if (res.data) {
showCommitSuccessMessage(`提交成功<br>生成补料记录<br>${res.data}`)
} else {
showErrorMessage(`提交失败[${res.msg}]`)
} }
})
.catch((error) => { if (this.detailSource.length == 0) {
uni.hideLoading() this.showMessage('请扫描要发货的物料')
showErrorMessage(error) return
}) }
}
const setParams = () => { this.detailSource.forEach((item) => {
const subList = [] item.subList.forEach((detail) => {
const createTime = getCurrDateTime() detail.toLocationCode = this.toLocationCode
const creator = store.id detail.fromLocation = this.fromLocationCode
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)
}
}) })
}) })
})
})
dataContent.value.subList = subList uni.showLoading({
dataContent.value.createTime = createTime title: '提交中....',
dataContent.value.creator = creator mask: true
return dataContent.value })
}
const getScanCount = () => { //
let scanCount = 0 const precisionStrategyParams = getPrecisionStrategyParams(this.detailSource)
const subList = [] // 2:
detailSource.value.forEach((toLocationCode) => { getPrecisionStrategyList(precisionStrategyParams, (res) => {
toLocationCode.Items.forEach((item) => { if (res.success) {
item.Locations.forEach((fromLocation) => { this.managementList = res.list
fromLocation.Batchs.forEach((batch) => { const params = this.setRecordParams()
const subItem = batch.detail console.log('提交参数', JSON.stringify(params))
subItem.recordList = []
repleinshRecordSubmit(params)
if (batch.Records.length > 0) { .then((res) => {
batch.Records.forEach((r) => { uni.hideLoading()
const record = {} if (res.data) {
record.handleQty = r.qty this.showCommitSuccessMessage(`提交成功<br>生成直接补料记录<br>${res.data}`)
subItem.recordList.push(record) } 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)
} }
}) })
}) })
}) if (subList.length > 0) {
}) this.dataContent.toWarehouseCode = subList[0].toWarehouseCode
return (scanCount = subList.length) }
} 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) => { showCommitSuccessMessage(hint) {
comMessageRef.value.showMessage(message, (res) => { this.$refs.comMessage.showSuccessMessage(hint, (res) => {
if (res) { this.clear()
} })
}) },
}
const showErrorMessage = (message) => { clear() {
comMessageRef.value.showErrorMessage(message, (res) => { this.fromLocationCode = ''
if (res) { 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> </script>
<style scoped lang="scss"> <style scoped lang="scss"></style>
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>

Loading…
Cancel
Save