Browse Source

修改制品直接上架及物料变更 2024/8/1 17:29:13

pull/1/head
张立 7 months ago
parent
commit
d275bbf7f4
  1. 6
      src/api/request2.js
  2. 14
      src/mycomponents/print/print.vue
  3. 8
      src/mycomponents/scan/winScanPackage.vue
  4. 51
      src/pages/fg/coms/comReceiptPopup.vue
  5. 61
      src/pages/fg/fgChange.vue
  6. 14
      src/pages/issue/coms/comIssueRequestPopup.vue
  7. 8
      src/pages/package/job/overPackageJobDetail.vue
  8. 16
      src/pages/package/record/overPackageRecord.vue
  9. 761
      src/pages/productPutaway/record/productPutawayRecord.vue
  10. 6
      src/pages/productReceipt/job/ccProductReceiptDetail.vue
  11. 5
      src/pages/productReceipt/job/productReceiptDetail.vue
  12. 2
      src/pages/productionReceipt/coms/comProductionRecord.vue

6
src/api/request2.js

@ -2729,3 +2729,9 @@ export function getSpareitemcode(params) {
export function getProductreceiptDetailbByPackingNumber(packingNumber ) { export function getProductreceiptDetailbByPackingNumber(packingNumber ) {
return http.get("/wms/productreceipt-detailb/getProductreceiptDetailbByPackingNumber?packingNumber="+packingNumber) return http.get("/wms/productreceipt-detailb/getProductreceiptDetailbByPackingNumber?packingNumber="+packingNumber)
} }
/**
* 物料变更
*/
export function fgChangeCommit(data) {
return http.post("/wms/relegate-request-main/bind",data)
}

14
src/mycomponents/print/print.vue

@ -93,10 +93,13 @@ export default {
await getPrintList() await getPrintList()
.then((res) => { .then((res) => {
this.printList = res.data this.printList = res.data
this.showPrintSelect = true
uni.hideLoading() uni.hideLoading()
}) })
.catch((error) => {}) .catch((error) => {
this.showPrintSelect = true uni.hideLoading()
this.showErrorMessage(error)
})
}, },
confirmSelectPrint(e) { confirmSelectPrint(e) {
console.log(e) console.log(e)
@ -113,9 +116,12 @@ export default {
.then((res) => { .then((res) => {
this.templateList = res.data this.templateList = res.data
uni.hideLoading() uni.hideLoading()
this.showTemplateSelect = true
})
.catch((error) => {
uni.hideLoading()
this.showErrorMessage(error)
}) })
.catch((error) => {})
this.showTemplateSelect = true
}, },
confirmSelectTemplate(e) { confirmSelectTemplate(e) {
this.templateCode = e[0].value this.templateCode = e[0].value

8
src/mycomponents/scan/winScanPackage.vue

@ -134,7 +134,7 @@ const getBalance = (result, callback) => {
} }
getBalanceByFilter(params) getBalanceByFilter(params)
.then((res) => { .then((res) => {
if (res.length == 0) { if (res.data.list.length == 0) {
showErrorMessage('未查找到该包装的库存余额', (res) => { showErrorMessage('未查找到该包装的库存余额', (res) => {
packGetFocus() packGetFocus()
}) })
@ -161,6 +161,12 @@ const losefocus = () => {
const showMessage = (message) => { const showMessage = (message) => {
comMessageRef.value.showMessage(message) comMessageRef.value.showMessage(message)
} }
const showErrorMessage = (message) => {
comMessageRef.value.showErrorMessage(message, (res) => {
if (res) {
}
})
}
// //
const emit = defineEmits(['getResult']) const emit = defineEmits(['getResult'])
</script> </script>

51
src/pages/fg/coms/comReceiptPopup.vue

@ -44,7 +44,7 @@
<view v-if="planQty > 0">{{ planQty }}({{ getUomInfo(uom) }})</view> <view v-if="planQty > 0">{{ planQty }}({{ getUomInfo(uom) }})</view>
<u-select v-model="showItemCodeSelect" mode="single-column" :list="itemCodeList" @confirm="confirmSelectItem"></u-select> <u-select v-model="showItemCodeSelect" mode="single-column" :list="itemCodeList" @confirm="confirmSelectItem"></u-select>
<view class=""> <view class="">
<image src="/static/icons/down.svg" mode="" style="width: 40rpx; height: 40rpx; margin-left: 20rpx" @click="showSelectItemCode"> </image> <image src="/static/icons/down.svg" mode="" style="width: 40rpx; height: 40rpx; margin-left: 20rpx" @click="showItemList"> </image>
</view> </view>
</view> </view>
@ -78,8 +78,6 @@
<image src="" mode="" style="width: 40rpx; height: 40rpx; margin-left: 20rpx" @click="showSelectLine"> </image> <image src="" mode="" style="width: 40rpx; height: 40rpx; margin-left: 20rpx" @click="showSelectLine"> </image>
</view> </view>
</view> </view>
<view class="split_line"></view>
</view> </view>
</view> </view>
</view> </view>
@ -157,9 +155,11 @@ export default {
openRequestPopup() { openRequestPopup() {
this.initData() this.initData()
this.planDate = getCurrDate() this.planDate = getCurrDate()
this.batch = getBatch8() // this.batch = getBatch8()
this.batch = this.planDate.replace('-', '')
this.$refs.popup.open('bottom') this.$refs.popup.open('bottom')
}, },
initData() { initData() {
this.itemCode = '请选择物料信息' this.itemCode = '请选择物料信息'
this.uom = '' this.uom = ''
@ -190,6 +190,7 @@ export default {
closeRequestPopup() { closeRequestPopup() {
this.$refs.popup.close() this.$refs.popup.close()
}, },
itemCodeLoseFocus() { itemCodeLoseFocus() {
this.itemCodeFocus = false this.itemCodeFocus = false
}, },
@ -261,9 +262,12 @@ export default {
const parent = this.productLineList.filter((res) => res.value == this.productionLineCode) const parent = this.productLineList.filter((res) => res.value == this.productionLineCode)
const fgLocation = parent[0].children.filter((children) => children.value == this.workStationCode) const fgLocation = parent[0].children.filter((children) => children.value == this.workStationCode)
this.fgLocationCode = fgLocation[0].fgLocationCode this.fgLocationCode = fgLocation[0].fgLocationCode
this.clearItemCode() // this.clearItemCode()
this.clearPackUnit() // this.clearPackUnit()
this.showProductLineSelect = false
this.showSelectItemCode()
}, },
clearItemCode() { clearItemCode() {
this.planDate = getCurrDate() this.planDate = getCurrDate()
this.itemCode = '请选择物料信息' this.itemCode = '请选择物料信息'
@ -271,10 +275,14 @@ export default {
this.planQty = 0 this.planQty = 0
this.goodQty = 0 this.goodQty = 0
this.planNumber = '' this.planNumber = ''
this.packUnit = ''
this.packQty = 0
}, },
confirmSelectDate(data) { confirmSelectDate(data) {
this.planDate = data[0].label this.planDate = data[0].label
this.batch = this.planDate.replace('-', '')
this.afterSelectPlanData()
}, },
showSelectDate() { showSelectDate() {
@ -313,6 +321,27 @@ export default {
this.showProductLineSelect = true this.showProductLineSelect = true
} }
}, },
afterSelectPlanData() {
this.itemCode = '请选择物料信息'
this.packUnit = ''
this.packQty = 0
this.planQty = 0
this.itemCode = '请选择物料信息'
this.uom = ''
this.packUnitName = '请选择包装规格'
this.packUnit = ''
this.packQtyHint = ''
// this.packUnitList = []
this.itemCodeList = []
this.showSelectItemCode()
},
showItemList() {
this.showItemCodeSelect = true
},
showSelectItemCode() { showSelectItemCode() {
if (!this.planDate) { if (!this.planDate) {
this.showErrorMessage('请先选择计划日期') this.showErrorMessage('请先选择计划日期')
@ -336,8 +365,14 @@ export default {
}) })
this.itemCodeList = res.data this.itemCodeList = res.data
this.showItemCodeSelect = true this.showItemCodeSelect = true
if (this.itemCodeList.length == 1) {
this.itemCode = this.itemCodeList[0].itemCode
} else {
this.showItemCodeSelect = true
}
} else { } else {
this.showErrorMessage('未查找到物料信息') this.showErrorMessage(`未查找到该生产线在【${this.planDate}】日期的生产计划`)
} }
}) })
.catch((error) => { .catch((error) => {
@ -345,6 +380,7 @@ export default {
this.showErrorMessage(error) this.showErrorMessage(error)
}) })
}, },
confirmSelectItem(data) { confirmSelectItem(data) {
const productionPlan = data[0].value const productionPlan = data[0].value
this.itemCode = productionPlan.itemCode this.itemCode = productionPlan.itemCode
@ -422,6 +458,7 @@ export default {
this.packQtyHint = `${pack[0].packQty}(${this.getUomInfo(pack[0].uom)})` this.packQtyHint = `${pack[0].packQty}(${this.getUomInfo(pack[0].uom)})`
this.packQty = pack[0].packQty this.packQty = pack[0].packQty
}, },
getUomInfo(uom) { getUomInfo(uom) {
const item = getUomInfo(uom) const item = getUomInfo(uom)
if (item == '') { if (item == '') {

61
src/pages/fg/fgChange.vue

@ -71,7 +71,7 @@
<script> <script>
import { Decimal } from 'decimal.js' // import { Decimal } from 'decimal.js' //
import { getSpareitemcode, getProductreceiptDetailbByPackingNumber } from '@/api/request2.js' import { getSpareitemcode, getProductreceiptDetailbByPackingNumber, fgChangeCommit } from '@/api/request2.js'
import { getPrecisionStrategyList } from '@/common/balance.js' import { getPrecisionStrategyList } from '@/common/balance.js'
import { goHome, getPackingNumberAndBatchByList, deepCopyData, getRemoveOption } from '@/common/basic.js' import { goHome, getPackingNumberAndBatchByList, deepCopyData, getRemoveOption } from '@/common/basic.js'
@ -110,6 +110,7 @@ export default {
businessType: {}, businessType: {},
show: false, show: false,
toItemCode: '请选择变更后物料', toItemCode: '请选择变更后物料',
toItemInfo: {},
toItemList: [], toItemList: [],
fgList: [], fgList: [],
currentPackage: null, currentPackage: null,
@ -262,28 +263,69 @@ export default {
if (this.currentPackage.handleQty == null) { if (this.currentPackage.handleQty == null) {
this.$refs.comMessage.showQuestionMessage('是否要将全部灯码进行变更?', (res) => { this.$refs.comMessage.showQuestionMessage('是否要将全部灯码进行变更?', (res) => {
if (res) { if (res) {
this.commitRecord() this.commitChange()
} }
}) })
} else { } else {
this.$refs.comMessage.showQuestionMessage(`是否要将已扫描的【${this.currentPackage.handleQty}】个灯码进行变更?`, (res) => { this.$refs.comMessage.showQuestionMessage(`是否要将已扫描的【${this.currentPackage.handleQty}】个灯码进行变更?`, (res) => {
if (res) { if (res) {
this.commitRecord() this.commitChange()
} }
}) })
} }
}, },
commitRecord() {
// this.showCommitSuccessMessage('') commitChange() {
uni.showLoading({
title: '提交中...',
mask: true
})
const params = this.setParams()
console.log('params', JSON.stringify(params))
fgChangeCommit(params)
.then((res) => {
const ss = res
})
.catch((err) => {
this.showErrorMessage(err.message)
})
}, },
setParams() { setParams() {
let scanedList = this.fgList.filter((r) => r.scaned == true) const creator = this.$store.state.user.id
if (this.currentPackage.handleQty > 0) { let subList = this.fgList.filter((r) => r.scaned == true)
scanedList = this.fgList.filter((r) => r.scaned == true) if (this.currentPackage.handleQty == undefined) {
subList = this.fgList
} }
const creator = this.$store.state.user.id // var item = deepCopyData(this.currentPackage);
const item = {}
item.fromItemCode = this.currentPackage.itemCode
item.fromItemName = this.currentPackage.itemName
item.fromItemDesc1 = this.currentPackage.itemDesc1
item.fromItemDesc2 = this.currentPackage.itemDesc2
item.toItemCode = this.toItemCode
item.toItemName = this.toItemInfo.itemName
item.toItemDesc1 = this.toItemInfo.itemDesc1
item.toItemDesc2 = this.toItemInfo.itemDesc2
item.fromInventoryStatus = this.currentPackage.inventoryStatus
item.fromQty = this.currentPackage.handleQty
item.fromParentPackingNumber = this.currentPackage.parentNumber
item.fromPackingNumber = this.currentPackage.packingNumber
item.fromBatch = this.currentPackage.batch
item.fromLocationCode = this.currentPackage.locationCode
item.fromPackUnit = this.currentPackage.packUnit
item.fromPackQty = this.currentPackage.packQty
item.toPackQty = this.currentPackage.packUnit
item.toPackUnit = this.currentPackage.packUnit
item.subList = subList
item.creator = creator
return item
}, },
showMessage(message) { showMessage(message) {
@ -357,6 +399,7 @@ export default {
}, },
confirmSelect(e) { confirmSelect(e) {
this.toItemCode = e[0].value this.toItemCode = e[0].value
this.toItemInfo = e[0]
} }
} }
} }

14
src/pages/issue/coms/comIssueRequestPopup.vue

@ -12,7 +12,7 @@
<view class="split_line"></view> <view class="split_line"></view>
<view class="uni-flex uni-column" style="background-color: white"> <view class="uni-flex uni-column" style="background-color: white">
<view class="uni-flex uni-column"> <view class="uni-flex uni-column">
<view class="uni-flex uni-row padding title u-col-center"> <!-- <view class="uni-flex uni-row padding title u-col-center">
<text>从仓库代码</text> <text>从仓库代码</text>
<view class="uni-flex u-col-center uni-row" @click="showWarseHouseSelect"> <view class="uni-flex u-col-center uni-row" @click="showWarseHouseSelect">
<view class="" style="margin-left: 20rpx; width: 100%"> <view class="" style="margin-left: 20rpx; width: 100%">
@ -20,8 +20,8 @@
</view> </view>
<u-select v-model="showWareHouse" mode="single-column" :list="wareHouseList" @confirm="confirmWareHouse"></u-select> <u-select v-model="showWareHouse" mode="single-column" :list="wareHouseList" @confirm="confirmWareHouse"></u-select>
</view> </view>
</view> </view> -->
<view class="split_line"></view> <!-- <view class="split_line"></view> -->
<view class="uni-flex uni-row" style="align-items: center; background-color: #fff; margin-right: 20rpx; border-radius: 8rpx"> <view class="uni-flex uni-row" style="align-items: center; background-color: #fff; margin-right: 20rpx; border-radius: 8rpx">
<view class="uni-center" style="width: 25%; font-size: 32rpx"> 优先级 </view> <view class="uni-center" style="width: 25%; font-size: 32rpx"> 优先级 </view>
<view style="width: 100%"> <view style="width: 100%">
@ -250,10 +250,10 @@ const confirm = () => {
return return
} }
if (fromWarehouseCode.value == '请选择仓库代码') { // if (fromWarehouseCode.value == '') {
showErrorMessage('请选择仓库代码') // showErrorMessage('')
return // return
} // }
if (itemCode.value == '请扫描物料信息') { if (itemCode.value == '请扫描物料信息') {
showErrorMessage('请输入物料', 'itemCode') showErrorMessage('请输入物料', 'itemCode')

8
src/pages/package/job/overPackageJobDetail.vue

@ -199,6 +199,14 @@ const closeScan = () => {
resizeCollapse() resizeCollapse()
} }
const submit = () => { const submit = () => {
if (!jobContent.value.printerUuid) {
showErrorMessage('请选择打印机')
return
}
if (!jobContent.value.modelCode) {
showErrorMessage('请选择打印模板')
return
}
// //
const itemCodes = [] const itemCodes = []
const locationCode = detailSource.value[0].toLocationCode const locationCode = detailSource.value[0].toLocationCode

16
src/pages/package/record/overPackageRecord.vue

@ -115,8 +115,12 @@ const printService = ref()
onLoad(() => { onLoad(() => {
getBusinessType() getBusinessType()
nextTick(() => { nextTick(() => {
const overPackageRecordPointParams = uni.getStorageSync('overPackageRecordPointParams') if (uni.getStorageSync('overPackageRecordPointParams')) {
printService.value.setDefaultData(overPackageRecordPointParams.printDeafult, overPackageRecordPointParams.templateDeafult) const overPackageRecordPointParams = uni.getStorageSync('overPackageRecordPointParams')
dataContent.value.printerUuid = overPackageRecordPointParams.printDeafult.value
dataContent.value.modelCode = overPackageRecordPointParams.templateDeafult.value
printService.value.setDefaultData(overPackageRecordPointParams.printDeafult, overPackageRecordPointParams.templateDeafult)
}
}) })
}) })
onLoad((option) => { onLoad((option) => {
@ -291,6 +295,14 @@ const scanPopupGetFocus = () => {
} }
} }
const commit = () => { const commit = () => {
if (!dataContent.value.printerUuid) {
showErrorMessage('请选择打印机')
return
}
if (!dataContent.value.modelCode) {
showErrorMessage('请选择打印模板')
return
}
if (detailSource.value.length > 0 && detailSource.value[0].subList.length > 0) { if (detailSource.value.length > 0 && detailSource.value[0].subList.length > 0) {
if (toPackUnit.value || toPackUnit.value == '包装规格') { if (toPackUnit.value || toPackUnit.value == '包装规格') {
showErrorMessage('请选择目标包装规格') showErrorMessage('请选择目标包装规格')

761
src/pages/productPutaway/record/productPutawayRecord.vue

@ -1,388 +1,391 @@
<template> <template>
<view class="page-wraper"> <view class="page-wraper">
<view class=""> <view class="">
<com-blank-view @goScan="showFromLocationPopup" v-if="detailSource.length == 0"></com-blank-view> <com-blank-view @goScan="openScanPopup" v-if="detailSource.length == 0"></com-blank-view>
</view> </view>
<view class="page-wraper" v-if="detailSource.length > 0"> <view class="page-wraper" v-if="detailSource.length > 0">
<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="detail-list" v-for="(item, index) in detailSource" :key="item.id"> <view class="detail-list" v-for="(item, index) in detailSource" :key="item.id">
<view class=""> <view class="">
<record-com-detail-card :dataContent="item" :index="index" :settingParam="dataContent" :isShowStatus="false" @removeItem="removeItem(index, item)" @updateData="updateData" @removePack="removePack"> </record-com-detail-card> <record-com-detail-card :dataContent="item" :index="index" :settingParam="dataContent"
</view> :isShowStatus="false" @removeItem="removeItem(index,item)" @updateData="updateData"
<view class="split_line"></view> @removePack="removePack">
</view> </view>
</scroll-view> <view class="split_line"></view>
</view> </view>
</scroll-view>
<view class="page-footer"> </view>
<view class="uni-flex u-col-center space-between padding_10" style="background-color: ghostwhite; width: 100%">
<view class=""> <view class="page-footer">
<requiredLocation title="目标库位" :locationCode="toLocationCode" @getLocation="getToLocationCode" :locationAreaTypeList="tolocationTypeList"></requiredLocation> <view class="uni-flex u-col-center space-between padding_10" style="background-color: ghostwhite; width: 100%">
</view> <view class="">
<view class="uni-flex uni-row"> <requiredLocation title="目标库位" :locationCode="toLocationCode" @getLocation="getToLocationCode"
<button class="btn_single_commit" hover-class="btn_commit_after" @click="commit">提交</button> :locationAreaTypeList="tolocationTypeList"></requiredLocation>
</view> </view>
</view> <view class="uni-flex uni-row">
</view> <button class="btn_single_commit" hover-class="btn_commit_after" @click="commit">提交</button>
<win-scan-button @goScan="openScanPopup"></win-scan-button> </view>
</view> </view>
</view>
<win-scan-pack-and-location :balanceFromInventoryStatuses="false" ref="scanPopup" @getResult="getScanResult"></win-scan-pack-and-location> <win-scan-button @goScan="openScanPopup"></win-scan-button>
<win-scan-location ref="scanLocationCode" title="来源库位" @getLocation="getLocation" :locationAreaTypeList="fromLocationAreaTypeList"></win-scan-location> </view>
<com-message ref="comMessageRef" />
</view> <win-scan-package ref="scanPopup" @getResult='getScanResult'></win-scan-package>
<com-message ref="comMessageRef" />
</view>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, getCurrentInstance, nextTick } from 'vue' import { ref, getCurrentInstance, nextTick } from 'vue'
import { onLoad, onNavigationBarButtonTap, onReady, onReachBottom, onPullDownRefresh } from '@dcloudio/uni-app' import { onLoad, onNavigationBarButtonTap, onReady, onReachBottom, onPullDownRefresh } from '@dcloudio/uni-app'
import { productPutawayRecordSubmit } from '@/api/request2.js' import { productPutawayRecordSubmit } from '@/api/request2.js'
import { goHome, getPackingNumberAndBatchByList, deepCopyData, updateTitle } from '@/common/basic.js' import { goHome, getPackingNumberAndBatchByList, deepCopyData, updateTitle } from '@/common/basic.js'
import { getPrecisionStrategyList } from '@/common/balance.js' import { getPrecisionStrategyList } from '@/common/balance.js'
import { getInventoryStatusDesc, getDirectoryItemArray } from '@/common/directory.js' import { getInventoryStatusDesc, getDirectoryItemArray } from '@/common/directory.js'
import { getBusinessType, createItemInfo, createDetailInfo, calcHandleQty } from '@/common/record.js' import { getBusinessType, createItemInfo, createDetailInfo, calcHandleQty } from '@/common/record.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 requiredLocation from '@/mycomponents/location/requiredLocation.vue'
import comProductionRecord from '@/pages/productionReceipt/coms/comProductionRecord.vue' import comProductionRecord from '@/pages/productionReceipt/coms/comProductionRecord.vue'
import comBlankView from '@/mycomponents/common/comBlankView.vue' import comBlankView from '@/mycomponents/common/comBlankView.vue'
import winScanLocation from '@/mycomponents/scan/winScanLocation.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 { useCountStore } from '@/store' import winScanPackage from '@/mycomponents/scan/winScanPackage.vue'
// store import { useCountStore } from '@/store'
const store = useCountStore()
const { proxy } = getCurrentInstance() // store
const id = ref('') const store = useCountStore()
const scanCount = ref(0) const { proxy } = getCurrentInstance()
const dataContent = ref({}) // const id = ref('')
const subList = ref([]) // subList const scanCount = ref(0)
const detailSource = ref([]) // const dataContent = ref({}) //
const fromLocationCode = ref('') const subList = ref([]) // subList
const toLocationCode = ref('') const detailSource = ref([]) //
const fromLocationAreaTypeList = ref([]) const fromLocationCode = ref('')
const tolocationTypeList = ref([]) const toLocationCode = ref('')
const inInventoryStatus = ref('') // const fromLocationAreaTypeList = ref([])
const outInventoryStatus = ref('') // const tolocationTypeList = ref([])
const businessType = ref({}) const inInventoryStatus = ref('') //
const managementList = ref([]) const outInventoryStatus = ref('') //
const scanLocationCode = ref() const bussinessCode = ref('ProductPutaway')
const scanPopup = ref() const businessType = ref({})
const comMessageRef = ref() const managementList = ref([])
const type = ref('') const scanLocationCode = ref()
onLoad((option) => { const scanPopup = ref()
uni.setNavigationBarTitle({ const comMessageRef = ref()
title: option.title const type = ref('')
}) onLoad((option) => {
type.value = option.type uni.setNavigationBarTitle({
if (type.value == 'predict') { title: option.title
updateTitle('制品上架记录') })
} else if (type.value == 'assemble') { type.value = option.type
updateTitle('装配上架记录') if (type.value == 'predict') {
} updateTitle('制品上架记录')
const typeCode = 'ProductPutaway' } else if (type.value == 'assemble') {
getBusinessType(typeCode, (res) => { updateTitle('装配上架记录')
if (res.success) { }
businessType.value = res.businessType getBusinessType(bussinessCode.value, (res) => {
fromLocationAreaTypeList.value = res.fromLocationAreaTypeList if (res.success) {
tolocationTypeList.value = res.tolocationTypeList businessType.value = res.businessType
showFromLocationPopup() fromLocationAreaTypeList.value = res.fromLocationAreaTypeList
} else { tolocationTypeList.value = res.tolocationTypeList
showErrorMessage(res.message) openScanPopup()
} } else {
}) showErrorMessage(res.message)
}) }
// })
onNavigationBarButtonTap((e) => { })
if (e.index === 0) { //
goHome() onNavigationBarButtonTap((e) => {
} if (e.index === 0) {
}) goHome()
}
const getScanResult = (result) => { })
const { balance } = result
const { label } = result const getScanResult = (result) => {
const pack = result.package const { balance } = result
const item = detailSource.value.find((res) => { const { label } = result
if (res.itemCode == balance.itemCode) { const pack = result.package
return res const item = detailSource.value.find((res) => {
} if (res.itemCode == balance.itemCode) {
}) return res
if (item == undefined) { }
const itemp = createItemInfo(balance, pack) })
const newDetail = createDetailInfo(balance, pack) // if (item == undefined) {
newDetail.fromInventoryStatus = balance.inventoryStatus const itemp = createItemInfo(balance, pack)
itemp.subList.push(newDetail) const newDetail = createDetailInfo(balance, pack) //
detailSource.value.push(itemp) newDetail.fromInventoryStatus = balance.inventoryStatus
} else { itemp.subList.push(newDetail)
const detail = item.subList.find((r) => { detailSource.value.push(itemp)
if (r.packingNumber == balance.packingNumber && r.batch == balance.batch && r.locationCode == balance.locationCode && r.inventoryStatus == balance.inventoryStatus) { } else {
return r const detail = item.subList.find((r) => {
} if (r.packingNumber == balance.packingNumber && r.batch == balance.batch && r.locationCode == balance.locationCode && r.inventoryStatus == balance.inventoryStatus) {
}) return r
if (detail == undefined) { }
const newDetail = createDetailInfo(balance, pack) })
newDetail.fromInventoryStatus = balance.inventoryStatus if (detail == undefined) {
item.subList.push(newDetail) const newDetail = createDetailInfo(balance, pack)
} else if (detail.scaned == true) { newDetail.fromInventoryStatus = balance.inventoryStatus
showErrorMessage(`箱码[${balance.packingNumber}批次[${balance.batch}]已经在列表中`) item.subList.push(newDetail)
} } else if (detail.scaned == true) {
} showErrorMessage(`箱码[${balance.packingNumber}批次[${balance.batch}]已经在列表中`)
handleCalcHandleQty() }
} }
handleCalcHandleQty()
const handleCalcHandleQty = () => { }
calcHandleQty(detailSource.value)
} const handleCalcHandleQty = () => {
calcHandleQty(detailSource.value)
const removeItem = (index, item) => { }
detailSource.value.splice(index, 1)
} const removeItem = (index, item) => {
const removePack = () => { detailSource.value.splice(index, 1)
for (let i = 0; i < detailSource.value.length; i++) { }
const item = detailSource.value[i] const removePack = () => {
if (item.subList.length == 0) { for (let i = 0; i < detailSource.value.length; i++) {
detailSource.value.splice(i, 1) const item = detailSource.value[i]
} if (item.subList.length == 0) {
} detailSource.value.splice(i, 1)
updateData() }
} }
updateData()
const openScanPopup = () => { }
if (fromLocationCode.value == '') {
showFromLocationPopup() const openScanPopup = () => {
return setTimeout(r => {
} scanPopup.value.openScanPopupByBusinessType(businessType.value)
scanPopup.value.openScanPopupForType(fromLocationCode.value, businessType.value) })
} }
const showFromLocationPopup = () => { const showFromLocationPopup = () => {
nextTick(() => { nextTick(() => {
scanLocationCode.value.openScanPopup() scanLocationCode.value.openScanPopup()
}) })
} }
const closeScanPopup = () => { const closeScanPopup = () => {
if (scanPopup.value != undefined) { if (scanPopup.value != undefined) {
scanPopup.value.closeScanPopup() scanPopup.value.closeScanPopup()
} }
} }
const scanPopupGetFocus = () => { const scanPopupGetFocus = () => {
if (scanPopup.value != undefined) { if (scanPopup.value != undefined) {
scanPopup.value.getfocus() scanPopup.value.getfocus()
} }
} }
// const scanLocationCode = (location, code) => { // const scanLocationCode = (location, code) => {
// toLocationCode.value = code // toLocationCode.value = code
// detailSource.value.forEach((item) => { // detailSource.value.forEach((item) => {
// item.subList.forEach((detail) => { // item.subList.forEach((detail) => {
// detail.toLocationCode = code // detail.toLocationCode = code
// }) // })
// }) // })
// } // }
const commit = () => { const commit = () => {
if (detailSource.value.length > 0 && detailSource.value[0].subList.length > 0) { if (detailSource.value.length > 0 && detailSource.value[0].subList.length > 0) {
// //
proxy.$modal.loading('提交中....') proxy.$modal.loading('提交中....')
managementList.value = [] managementList.value = []
const precisionStrategParams = setPrecisionStrategParams() const precisionStrategParams = setPrecisionStrategParams()
getPrecisionStrategyList(precisionStrategParams, (res) => { getPrecisionStrategyList(precisionStrategParams, (res) => {
if (res.success) { if (res.success) {
managementList.value = res.list managementList.value = res.list
const params = setParams() const params = setParams()
productPutawayRecordSubmit(params) productPutawayRecordSubmit(params)
.then((res) => { .then((res) => {
uni.hideLoading() uni.hideLoading()
if (res.data) { if (res.data) {
showCommitSuccessMessage(`提交成功<br>生成制品上架记录<br>${res.data}`) showCommitSuccessMessage(`提交成功<br>生成制品上架记录<br>${res.data}`)
} else { } else {
showErrorMessage(`提交失败[${res.msg}]`) showErrorMessage(`提交失败[${res.msg}]`)
} }
}) })
.catch((error) => { .catch((error) => {
uni.hideLoading() uni.hideLoading()
showErrorMessage(error) showErrorMessage(error)
}) })
} else { } else {
uni.hideLoading() uni.hideLoading()
showErrorMessage(res.message) showErrorMessage(res.message)
} }
}) })
} else { } else {
showErrorMessage('没有要提交的数据,请先扫描') showErrorMessage('没有要提交的数据,请先扫描')
} }
} }
const setPrecisionStrategParams = () => { const setPrecisionStrategParams = () => {
const itemList = [] const itemList = []
detailSource.value.forEach((item) => { detailSource.value.forEach((item) => {
item.subList.forEach((detail) => { item.subList.forEach((detail) => {
if (detail.scaned) { if (detail.scaned) {
detail.toLocationCode = toLocationCode.value detail.toLocationCode = toLocationCode.value
const filterResult = itemList.filter((res) => { const filterResult = itemList.filter((res) => {
if (res.itemCode == item.itemCode && detail.toLocationCode == res.locationCode) { if (res.itemCode == item.itemCode && detail.toLocationCode == res.locationCode) {
return res return res
} }
}) })
// //
if (filterResult.length == 0) { if (filterResult.length == 0) {
const result = { const result = {
itemCode: item.itemCode, itemCode: item.itemCode,
locationCode: detail.toLocationCode locationCode: detail.toLocationCode
} }
itemList.push(result) itemList.push(result)
} }
} }
}) })
}) })
return itemList return itemList
} }
const setParams = () => { const setParams = () => {
const subList = [] const subList = []
const creator = store.id const creator = store.id
detailSource.value.forEach((item) => { detailSource.value.forEach((item) => {
item.subList.forEach((detail) => { item.subList.forEach((detail) => {
if (detail.scaned) { if (detail.scaned) {
const submitItem = deepCopyData(detail) const submitItem = deepCopyData(detail)
const info = getPackingNumberAndBatchByList(managementList.value, detail.itemCode, detail.packingNumber, detail.toLocationCode, detail.batch) const info = getPackingNumberAndBatchByList(managementList.value, detail.itemCode, detail.packingNumber, detail.toLocationCode, detail.batch)
submitItem.itemCode = detail.itemCode submitItem.itemCode = detail.itemCode
submitItem.itemName = detail.package.itemName submitItem.itemName = detail.package.itemName
submitItem.itemDesc1 = detail.package.itemDesc1 submitItem.itemDesc1 = detail.package.itemDesc1
submitItem.itemDesc2 = detail.package.itemDesc2 submitItem.itemDesc2 = detail.package.itemDesc2
submitItem.inventoryStatus = detail.inventoryStatus submitItem.inventoryStatus = detail.inventoryStatus
submitItem.fromPackingNumber = info.packingNumber submitItem.fromPackingNumber = info.packingNumber
submitItem.toPackingNumber = info.packingNumber submitItem.toPackingNumber = info.packingNumber
submitItem.fromContainerNumber = detail.containerNumber submitItem.fromContainerNumber = detail.containerNumber
submitItem.toContainerNumber = detail.containerNumber submitItem.toContainerNumber = detail.containerNumber
submitItem.fromBatch = info.batch submitItem.fromBatch = info.batch
submitItem.toBatch = info.batch submitItem.toBatch = info.batch
submitItem.fromLocationCode = detail.locationCode submitItem.fromLocationCode = detail.locationCode
submitItem.toLocationCode = detail.toLocationCode submitItem.toLocationCode = detail.toLocationCode
submitItem.qty = detail.handleQty submitItem.qty = detail.handleQty
submitItem.package = '' submitItem.package = ''
subList.push(submitItem) subList.push(submitItem)
} }
}) })
}) })
dataContent.value.subList = subList dataContent.value.subList = subList
dataContent.value.type = type.value dataContent.value.type = type.value
dataContent.value.creator = creator dataContent.value.creator = creator
return dataContent.value return dataContent.value
} }
const showMessage = (message) => { const showMessage = (message) => {
comMessageRef.value.showMessage(message, (res) => { comMessageRef.value.showMessage(message, (res) => {
if (res) { if (res) {
} }
}) })
} }
const showErrorMessage = (message) => { const showErrorMessage = (message) => {
comMessageRef.value.showErrorMessage(message, (res) => { comMessageRef.value.showErrorMessage(message, (res) => {
if (res) { if (res) {
} }
}) })
} }
const showScanMessage = (message) => { const showScanMessage = (message) => {
comMessageRef.value.showScanMessage(message) comMessageRef.value.showScanMessage(message)
} }
const afterCloseMessage = () => { const afterCloseMessage = () => {
scanPopupGetFocus() scanPopupGetFocus()
} }
const closeScanMessage = () => { const closeScanMessage = () => {
scanPopupGetFocus() scanPopupGetFocus()
} }
const getLocation = (location, code) => { const getLocation = (location, code) => {
getFromLocationCode(location, code) getFromLocationCode(location, code)
} }
const getFromLocationCode = (location, code) => { const getFromLocationCode = (location, code) => {
fromLocationCode.value = code fromLocationCode.value = code
openScanPopup() openScanPopup()
} }
const getToLocationCode = (location, code) => { const getToLocationCode = (location, code) => {
console.log(code) console.log(code)
toLocationCode.value = code toLocationCode.value = code
// detailSource.value.forEach((item) => { // detailSource.value.forEach((item) => {
// item.subList.forEach((detail) => { // item.subList.forEach((detail) => {
// detail.toLocationCode = toLocationCode.value // detail.toLocationCode = toLocationCode.value
// }) // })
// }) // })
} }
const showCommitSuccessMessage = (hint) => { const showCommitSuccessMessage = (hint) => {
comMessageRef.value.showSuccessMessage(hint, (res) => { comMessageRef.value.showSuccessMessage(hint, (res) => {
if (res) { if (res) {
clearData() clearData()
} }
}) })
} }
const clearData = () => { const clearData = () => {
fromLocationCode.value = '' fromLocationCode.value = ''
subList.value = [] subList.value = []
detailSource.value = [] detailSource.value = []
toLocationCode.value = '' toLocationCode.value = ''
dataContent.value = {} dataContent.value = {}
} }
const updateData = () => { const updateData = () => {
handleCalcHandleQty() handleCalcHandleQty()
for (let i = 0; i < detailSource.value.length; i++) { for (let i = 0; i < detailSource.value.length; i++) {
const item = detailSource.value[i] const item = detailSource.value[i]
if (item.qty == 0) { if (item.qty == 0) {
detailSource.value.splice(i, 1) detailSource.value.splice(i, 1)
} }
} }
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
page { page {
width: 100%; width: 100%;
height: 100%; height: 100%;
background-color: #fff; background-color: #fff;
} }
.page-wraper { .page-wraper {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
.page-main { .page-main {
flex: 1; flex: 1;
position: relative; position: relative;
} }
.page-main-scroll { .page-main-scroll {
position: absolute; position: absolute;
left: 0; left: 0;
right: 0; right: 0;
top: 0; top: 0;
bottom: 0; bottom: 0;
} }
.page-main-list { .page-main-list {
/* height: 80rpx; /* height: 80rpx;
line-height: 80rpx; */ line-height: 80rpx; */
text-align: center; text-align: center;
background: #e0e0e0; background: #e0e0e0;
} }
</style> </style>

6
src/pages/productReceipt/job/ccProductReceiptDetail.vue

@ -14,9 +14,9 @@
</view> </view>
<view class="cell_info"> <view class="cell_info">
<view class="text_lightblue">生产线</view> <view class="text_lightblue">生产线</view>
<view> <view v-if="jobContent&&jobContent.subList&&jobContent.subList[0]">
{{jobContent.subList[0].productionLineCode}} {{jobContent.subList[0].productionLineCode}}
</view> </view>
</view> </view>
<view class="cell_info"> <view class="cell_info">
<view class="text_lightblue">班组</view> <view class="text_lightblue">班组</view>

5
src/pages/productReceipt/job/productReceiptDetail.vue

@ -19,7 +19,7 @@
<view class="cell_info"> <view class="cell_info">
<view class="text_lightblue">生产线</view> <view class="text_lightblue">生产线</view>
<view> <view>
{{ jobContent.subList[0].productionLineCode }} {{ productionLineCode }}
</view> </view>
</view> </view>
<view class="cell_info"> <view class="cell_info">
@ -99,6 +99,7 @@ const managementList = ref([])
const jobStatus = ref('') const jobStatus = ref('')
const jobToLocationCode = ref('') const jobToLocationCode = ref('')
const status = ref('') const status = ref('')
const productionLineCode = ref('')
const scanMessage = ref('') const scanMessage = ref('')
const scanPopup = ref() const scanPopup = ref()
const comScanLocation = ref() const comScanLocation = ref()
@ -176,6 +177,8 @@ const getDetail = () => {
subList.value = res.data.subList subList.value = res.data.subList
jobStatus.value = res.data.status jobStatus.value = res.data.status
jobToLocationCode.value = subList.value[0].toLocationCode jobToLocationCode.value = subList.value[0].toLocationCode
productionLineCode.value = jobContent.value.subList[0].productionLineCode
if (jobContent.value.allowModifyLocation == 'FALSE') { if (jobContent.value.allowModifyLocation == 'FALSE') {
toLocationCode.value = subList.value[0].toLocationCode toLocationCode.value = subList.value[0].toLocationCode
} }

2
src/pages/productionReceipt/coms/comProductionRecord.vue

@ -24,7 +24,7 @@
<view class='split_line'></view> <view class='split_line'></view>
</view> --> </view> -->
<u-swipe-action :show="detail.show" :index="index" v-for="(detail, index) in dataContent.subList" :key="index" :options="detail.scaned ? scanOptions : detailOptions" bg-color="rgba(255,255,255,0)" class="u-m-b-20" @click="(...event) => swipeClick(event, detail)"> <u-swipe-action :show="detail.show" :index="index" v-for="(detail, index) in dataContent.subList" :key="index" :options="detail.scaned ? scanOptions : detailOptions" bg-color="rgba(255,255,255,0)" class="u-m-b-20" @click="(...event) => swipeClick(event, detail)">
<production-label :dataContent="item" :packageContent="item.package" :isShowStdPack="false"></production-label> <production-label :dataContent="item" :packageContent="item.package" :isShowStdPack="false" :isShowLocation="false"></production-label>
</u-swipe-action> </u-swipe-action>
</u-collapse-item> </u-collapse-item>
</u-collapse> </u-collapse>

Loading…
Cancel
Save