You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
199 lines
5.3 KiB
199 lines
5.3 KiB
<template>
|
|
<view class="page-wraper">
|
|
<view class="page-header">
|
|
<view class="header-view">
|
|
<view class="header_item"> 发货单号:{{ dataContent.asnNumber }} </view>
|
|
<view class="header_item"> 供应商代码:{{ dataContent.supplierCode }} </view>
|
|
</view>
|
|
</view>
|
|
<view class="page-main">
|
|
<scroll-view scroll-y="true" class="page-main-scroll">
|
|
<view class="detail-list" v-for="(item, index) in detailSource" :key="item.id">
|
|
<view class="">
|
|
<com-record-detail-card :dataContent="item" :index="index" @remove="updateData" @updateData="updateData" @openDetail="openDetail"> </com-record-detail-card>
|
|
</view>
|
|
</view>
|
|
</scroll-view>
|
|
</view>
|
|
|
|
<!-- <view class="page-footer">
|
|
<view class="uni-flex u-col-center space-between padding_10"
|
|
style="background-color:ghostwhite; width: 100%; ">
|
|
<view class="">
|
|
</view>
|
|
</view>
|
|
</view> -->
|
|
|
|
<!-- <win-scan-pack ref="scanPopup" @getResult='getScanResult'></win-scan-pack> -->
|
|
<recordDetailInfoPopup ref="recordDetailPopup"></recordDetailInfoPopup>
|
|
<com-message ref="comMessageRef" />
|
|
</view>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import { ref, getCurrentInstance, onMounted, nextTick, watch } from 'vue'
|
|
import { onLoad, onNavigationBarButtonTap, onReady, onReachBottom, onPullDownRefresh, onShow, onBackPress } from '@dcloudio/uni-app'
|
|
import { getSupplierDeliverRecordDetail } from '@/api/request2.js'
|
|
|
|
import { goHome, getCurrDateTime, getPackingNumberAndBatch, getDirectoryItemArray } from '@/common/basic.js'
|
|
|
|
import { getManagementPrecisions } from '@/common/balance.js'
|
|
|
|
import { getDataSource, createRecordInfo, calcHandleQty } from '@/common/detail.js'
|
|
|
|
import winScanPack from '@/mycomponents/scan/winScanPack.vue'
|
|
import comRecordDetailCard from '@/pages/supplierDeliver/coms/comRecordDetailCard.vue'
|
|
import recordDetailInfoPopup from '@/pages/supplierDeliver/coms/recordDetailInfoPopup.vue'
|
|
|
|
const { proxy } = getCurrentInstance()
|
|
const id = ref('')
|
|
const receiptJob = ref({})
|
|
const received = ref(false)
|
|
const scanCount = ref(0)
|
|
const dataContent = ref({}) // 任务内容
|
|
const subList = ref([]) // 接口返回的任务subList
|
|
const detailSource = ref([]) // 绑定在页面上的数据源
|
|
const toLocationCode = ref('')
|
|
const toLocationInfo = ref({})
|
|
const businessTypeInfo = ref({})
|
|
const managementList = ref([])
|
|
const recordDetailPopup = ref()
|
|
onLoad((option) => {
|
|
uni.setNavigationBarTitle({
|
|
title: `${option.title}详情`
|
|
})
|
|
id.value = option.id
|
|
getDetail()
|
|
})
|
|
onNavigationBarButtonTap((e) => {
|
|
if (e.index === 0) {
|
|
goHome()
|
|
}
|
|
})
|
|
const getDetail = () => {
|
|
proxy.$modal.loading('加载中....')
|
|
getSupplierDeliverRecordDetail(id.value)
|
|
.then((res) => {
|
|
uni.hideLoading()
|
|
if (res.data == null) {
|
|
showMessage('未获取到详情')
|
|
} else if (res.data.subList.length > 0) {
|
|
dataContent.value = res.data
|
|
subList.value = res.data.subList
|
|
subList.value.forEach((res) => {
|
|
res.packingNumber = res.toPackingNumber
|
|
res.batch = res.fromBatch
|
|
})
|
|
detailSource.value = getDataSource(subList.value)
|
|
} else {
|
|
showMessage('列表数据为0')
|
|
}
|
|
})
|
|
.catch((error) => {
|
|
uni.hideLoading()
|
|
showErrorMessage(error)
|
|
})
|
|
}
|
|
|
|
const getScanResult = (result) => {
|
|
try {
|
|
const { packingNumber } = result.label
|
|
const { batch } = result.label
|
|
const { qty } = result.label
|
|
const { itemCode } = result.label
|
|
const detail = detailSource.value.find((r) => r.itemCode == itemCode)
|
|
if (detail == undefined) {
|
|
showMessage(`物料号【${itemCode}】不在列表中`)
|
|
} else {
|
|
const itemDetail = detail.subList.find((r) => r.packingNumber == packingNumber && r.batch == batch)
|
|
if (itemDetail == undefined) {
|
|
showMessage(`箱码【${packingNumber}】、批次【${batch}】不在列表中`)
|
|
} else if (itemDetail.scaned) {
|
|
showMessage(`箱码【${packingNumber}】已经扫描`)
|
|
} else {
|
|
itemDetail.scaned = true
|
|
calcHandleQty(detailSource.value)
|
|
}
|
|
}
|
|
} catch (e) {
|
|
showErrorMessage(e.message)
|
|
}
|
|
}
|
|
|
|
const getScanCount = (closeScan) => {
|
|
const items = subList.value.filter((r) => {
|
|
if (r.scaned) {
|
|
return r
|
|
}
|
|
})
|
|
const scanCount = items != null ? items.length : 0
|
|
return scanCount
|
|
}
|
|
|
|
const updateData = () => {
|
|
calcHandleQty(detailSource.value)
|
|
}
|
|
|
|
const showMessage = (message) => {
|
|
comMessageRef.value.showMessage(message, (res) => {
|
|
if (res) {
|
|
}
|
|
})
|
|
}
|
|
|
|
const showErrorMessage = (message) => {
|
|
setTimeout((r) => {
|
|
comMessageRef.value.showErrorMessage(message, (res) => {
|
|
if (res) {
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
const openScanPopup = () => {
|
|
scanPopup.value.openScanPopup()
|
|
}
|
|
|
|
const closeScanPopup = () => {
|
|
scanPopup.value.closeScanPopup()
|
|
}
|
|
|
|
const openDetail = (item) => {
|
|
recordDetailPopup.value.openPopup(item)
|
|
}
|
|
</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>
|
|
|