<template> <!-- <page-meta root-font-size="18px"></page-meta> --> <view class="page-wraper"> <view class="page-main"> <scroll-view scroll-y="true" class=""> <view v-for="(toLocation, index) in detailSource"> <com-issue-detail-card ref='comIssueDetailCard' :dataContent="toLocation" @updateData='updateData'> </com-issue-detail-card> </view> </scroll-view> </view> <div class="btn_bottom"> <view class="" style="display: flex;flex-direction: row;"> <view class=""> <button class="btn_commit" hover-class="btn_commit_after" @click="submit()">提交</button> </view> </view> </div> <win-scan-button @goScan='openScanDetailPopup'></win-scan-button> <com-scan-issue-pack ref="comScanIssuePack" @closeScan='closeScan' @updateData='updateData'> </com-scan-issue-pack> <comMessage ref="comMessage"></comMessage> </view> </template> <script> import { takeIssueJob cancleTakeIssueJob, getIssueJobDetail, } from '@/api/request2.js'; import { goHome, updateTitle, getRemoveOption, getISODateTime, getDirectoryItemArray } from '@/common/basic.js'; import { getDataSource } from '@/pages/issue/js/issue.js'; import jobDetailPopup from '@/mycomponents/job/jobDetailPopup.vue' import winScanButton from '@/mycomponents/scan/winScanButton.vue' import comIssueDetailCard from '@/pages/issue/coms/comIssueDetailCard.vue' import comScanIssuePack from '@/pages/issue/coms/comScanIssuePack.vue' import comMessage from '@/mycomponents/common/comMessage.vue' export default { name: 'issueDetail', components: { jobDetailPopup, winScanButton, comIssueDetailCard, comScanIssuePack, comMessage }, data() { return { id: '', jobContent: {}, //任务内容 subList: [], //接口返回的任务subList detailSource: [], //绑定在页面上的数据源 detailOptions: [], scanOptions: [] }; }, props: { }, onLoad(option) { this.id = option.id; // if (this.id != undefined) { // //新建的任务自动接收 // if (option.status == "JOB_PENDING") { // this.receive((callback => { // this.received = true; // this.getDetail(); // })); // } else { // this.getDetail(); // } // } this.getDetail(); }, onNavigationBarButtonTap(e) { if (e.index === 0) { goHome(); } }, //拦截返回按钮事件 onBackPress(e) { //已经接收但是没提交任务 if (this.received) { //取消承接任务 cancleTakeIssueJob(this.id).then(res => {}).catch(error => { this.showMessage(err); }) } }, watch: { locationTypes(newVal) { let value = newVal; }, }, mounted: function() { }, methods: { //接收 receive(callback) { if (this.id != null) { takeIssueJob(this.id).then(res => { callback(); }).catch(error => { this.showErrorMessage(error) }) } }, getDetail() { var that = this; uni.showLoading({ title: "加载中....", mask: true }); getIssueJobDetail(that.id).then(res => { debugger uni.hideLoading(); if (res.data == null) { that.showMessage('未获取到详情'); } else { if (res.data.subList.length > 0) { that.jobContent = res.data; that.subList = res.data.subList; that.detailSource = getDataSource(that.detailSource, that.subList) // that.fromLocationCode = that.subList[0].FromLocationCode // that.toLocationCode = that.subList[0].toLocationCode // that.tolocationTypeList = getDirectoryItemArray(that.jobContent.toLocationTypes) that.resizeCollapse(); uni.hideLoading(); } else { that.showMessage('列表数据为0'); } } }).catch(error => { uni.hideLoading() this.showErrorMessage(error) }) }, closeScan() { this.resizeCollapse(); }, resizeCollapse() { this.$nextTick(r => { this.$refs.comIssueDetailCard.forEach(r => { r.resizeCollapse(); }) }); }, submit() { //3.如果是按批次先进先出发料提交时如果扫描的箱码不是先进的批次,则报错 //:请扫描XXX批次,改批次满足先进先出规则。否则可以直接提交 var isOutIn = getApp().globalData.feed_configList.filter( res => { if (res.name == 'feed_isOutIn') { return res; } }); this.dataContent.itemCodeList.forEach(res => { if (res.handleQty > res.recommendQty) { this.$refs.modal.showConfirmMessageModal('实际数量大于需求数量,是否提交?', confirm => { if (confirm) { //提交 uni.showToast({ title: "提交" }) } }) } else { uni.showToast({ title: "扫描的数量" + res.handleQty + "]小于推荐数量[" + res.recommendQty + "]" }) } }) }, cancel() { let that = this; this.$refs.comMessage.showQuestionMessage('是否要清空已扫描的零件和目标库位信息?', res => { if (res) { that.clearInfo(); } }); }, clearInfo() { this.dataContent.itemCodeList.forEach(res => { if (res.recommendList != null) { res.recommendList.forEach(res1 => { if (res1.locationCodeList != null) { res1.locationCodeList.forEach(res2 => { if (res2.packingCodeList != null) { res2.packingCodeList.forEach(res3 => { res3.itemCode = ""; res3.qty = 0; }) } }) } }) } }) }, updateData(record) { let requestLocation = this.detailSource.find(r => r.toLocationCode == record.toLocationCode); let item = requestLocation.Items.find(r => r.itemCode == record.itemCode); let itemHandleQty = 0; if (item != undefined) { item.Locations.forEach(l => { let batch = l.Batchs.find(b => (b.packingNumber == record.packingNumber || b .packingNumber == '') && b.batch == record.batch); let handleQty = 0; batch.Records.forEach(res => { handleQty += Number(res.qty) }) batch.handleQty = handleQty; itemHandleQty += handleQty; }) } // item.handleQty=itemHandleQty; }, scanPopupGetFocus() { if (this.$refs.scanPopup != undefined) { this.$refs.scanPopup.getfocus(); } }, showMessage(message) { this.$refs.comMessage.showMessage(message, res => { if (res) { this.afterCloseMessage() } }); }, showErrorMessage(message) { this.$refs.comMessage.showErrorMessage(message, res => { if (res) { this.afterCloseMessage() } }); }, showScanMessage(message) { this.$refs.comMessage.showScanMessage(message); }, showCommitSuccess() { this.$refs.comMessage.showCommitSuccess(); }, showRescanMessage(message) { this.$refs.comMessage.showRescanMessage(message); }, closeCommitMessage() { this.openScanPopup(); }, afterCloseMessage() { this.scanPopupGetFocus(); }, showScanMessage(message) { this.$refs.comMessage.showScanMessage(message); }, closeScanMessage() { this.scanPopupGetFocus(); }, confirm(data) { this.dataContent = data; }, confirmResult(result) { this.dataContent = result; this.$forceUpdate(); }, openScanDetailPopup() { var datacontent = {} //克隆对象,深度克隆,防止双向绑定同一个变量 // Object.assign(datacontent, this.detailSource); this.$refs.comScanIssuePack.openScanPopup(this.detailSource, this.jobContent); }, closeScanPopup() { this.updateCommitBtn(); }, } }; </script> <style scoped lang="scss"> .uni-numbox__value { width: 40px; } button[disabled] { background-color: #3C9CFF; color: #fff; opacity: 0.7; } // /deep/ .input-value { // font-size: 16px; // } // /deep/ .uni-collapse-item__title-text { // font-size: 16px; // } // /deep/ .uni-collapse-item--border { // border-bottom-width: 0px; // border-bottom-color: #ebeef5; // } // /deep/ .uni-collapse-item--border { // border-bottom-width: 1px; // border-bottom-color: #ebeef5; // } </style>