|
@ -1,7 +1,7 @@ |
|
|
<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"> |
|
@ -9,7 +9,9 @@ |
|
|
<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" |
|
|
|
|
|
:isShowStatus="false" @removeItem="removeItem(index,item)" @updateData="updateData" |
|
|
|
|
|
@removePack="removePack"> |
|
|
</view> |
|
|
</view> |
|
|
<view class="split_line"></view> |
|
|
<view class="split_line"></view> |
|
|
</view> |
|
|
</view> |
|
@ -19,7 +21,8 @@ |
|
|
<view class="page-footer"> |
|
|
<view class="page-footer"> |
|
|
<view class="uni-flex u-col-center space-between padding_10" style="background-color: ghostwhite; width: 100%"> |
|
|
<view class="uni-flex u-col-center space-between padding_10" style="background-color: ghostwhite; width: 100%"> |
|
|
<view class=""> |
|
|
<view class=""> |
|
|
<requiredLocation title="目标库位" :locationCode="toLocationCode" @getLocation="getToLocationCode" :locationAreaTypeList="tolocationTypeList"></requiredLocation> |
|
|
<requiredLocation title="目标库位" :locationCode="toLocationCode" @getLocation="getToLocationCode" |
|
|
|
|
|
:locationAreaTypeList="tolocationTypeList"></requiredLocation> |
|
|
</view> |
|
|
</view> |
|
|
<view class="uni-flex uni-row"> |
|
|
<view class="uni-flex uni-row"> |
|
|
<button class="btn_single_commit" hover-class="btn_commit_after" @click="commit">提交</button> |
|
|
<button class="btn_single_commit" hover-class="btn_commit_after" @click="commit">提交</button> |
|
@ -29,54 +32,57 @@ |
|
|
<win-scan-button @goScan="openScanPopup"></win-scan-button> |
|
|
<win-scan-button @goScan="openScanPopup"></win-scan-button> |
|
|
</view> |
|
|
</view> |
|
|
|
|
|
|
|
|
<win-scan-pack-and-location :balanceFromInventoryStatuses="false" ref="scanPopup" @getResult="getScanResult"></win-scan-pack-and-location> |
|
|
<win-scan-package ref="scanPopup" @getResult='getScanResult'></win-scan-package> |
|
|
<win-scan-location ref="scanLocationCode" title="来源库位" @getLocation="getLocation" :locationAreaTypeList="fromLocationAreaTypeList"></win-scan-location> |
|
|
|
|
|
<com-message ref="comMessageRef" /> |
|
|
<com-message ref="comMessageRef" /> |
|
|
</view> |
|
|
</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() |
|
|
|
|
|
const comMessageRef = ref() |
|
|
|
|
|
const type = ref('') |
|
|
|
|
|
onLoad((option) => { |
|
|
uni.setNavigationBarTitle({ |
|
|
uni.setNavigationBarTitle({ |
|
|
title: option.title |
|
|
title: option.title |
|
|
}) |
|
|
}) |
|
@ -86,26 +92,25 @@ onLoad((option) => { |
|
|
} else if (type.value == 'assemble') { |
|
|
} else if (type.value == 'assemble') { |
|
|
updateTitle('装配上架记录') |
|
|
updateTitle('装配上架记录') |
|
|
} |
|
|
} |
|
|
const typeCode = 'ProductPutaway' |
|
|
getBusinessType(bussinessCode.value, (res) => { |
|
|
getBusinessType(typeCode, (res) => { |
|
|
|
|
|
if (res.success) { |
|
|
if (res.success) { |
|
|
businessType.value = res.businessType |
|
|
businessType.value = res.businessType |
|
|
fromLocationAreaTypeList.value = res.fromLocationAreaTypeList |
|
|
fromLocationAreaTypeList.value = res.fromLocationAreaTypeList |
|
|
tolocationTypeList.value = res.tolocationTypeList |
|
|
tolocationTypeList.value = res.tolocationTypeList |
|
|
showFromLocationPopup() |
|
|
openScanPopup() |
|
|
} else { |
|
|
} else { |
|
|
showErrorMessage(res.message) |
|
|
showErrorMessage(res.message) |
|
|
} |
|
|
} |
|
|
}) |
|
|
}) |
|
|
}) |
|
|
}) |
|
|
// 返回首页 |
|
|
// 返回首页 |
|
|
onNavigationBarButtonTap((e) => { |
|
|
onNavigationBarButtonTap((e) => { |
|
|
if (e.index === 0) { |
|
|
if (e.index === 0) { |
|
|
goHome() |
|
|
goHome() |
|
|
} |
|
|
} |
|
|
}) |
|
|
}) |
|
|
|
|
|
|
|
|
const getScanResult = (result) => { |
|
|
const getScanResult = (result) => { |
|
|
const { balance } = result |
|
|
const { balance } = result |
|
|
const { label } = result |
|
|
const { label } = result |
|
|
const pack = result.package |
|
|
const pack = result.package |
|
@ -135,16 +140,16 @@ const getScanResult = (result) => { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
handleCalcHandleQty() |
|
|
handleCalcHandleQty() |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
const handleCalcHandleQty = () => { |
|
|
const handleCalcHandleQty = () => { |
|
|
calcHandleQty(detailSource.value) |
|
|
calcHandleQty(detailSource.value) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
const removeItem = (index, item) => { |
|
|
const removeItem = (index, item) => { |
|
|
detailSource.value.splice(index, 1) |
|
|
detailSource.value.splice(index, 1) |
|
|
} |
|
|
} |
|
|
const removePack = () => { |
|
|
const removePack = () => { |
|
|
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.subList.length == 0) { |
|
|
if (item.subList.length == 0) { |
|
@ -152,43 +157,41 @@ const removePack = () => { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
updateData() |
|
|
updateData() |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
const openScanPopup = () => { |
|
|
const openScanPopup = () => { |
|
|
if (fromLocationCode.value == '') { |
|
|
setTimeout(r => { |
|
|
showFromLocationPopup() |
|
|
scanPopup.value.openScanPopupByBusinessType(businessType.value) |
|
|
return |
|
|
}) |
|
|
} |
|
|
} |
|
|
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) { |
|
|
// 查询管理模式 |
|
|
// 查询管理模式 |
|
|
|
|
|
|
|
@ -221,9 +224,9 @@ const commit = () => { |
|
|
} 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) => { |
|
@ -246,9 +249,9 @@ const setPrecisionStrategParams = () => { |
|
|
}) |
|
|
}) |
|
|
}) |
|
|
}) |
|
|
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) => { |
|
@ -285,37 +288,37 @@ const setParams = () => { |
|
|
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) => { |
|
@ -323,25 +326,25 @@ const getToLocationCode = (location, code) => { |
|
|
// 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] |
|
@ -349,40 +352,40 @@ const updateData = () => { |
|
|
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> |