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.

278 lines
7.0 KiB

1 year ago
<template>
<!-- <page-meta root-font-size="18px"></page-meta> -->
<view class="">
<com-blank-view @goScan='openScanPopup' v-if="locationCode==''"></com-blank-view>
<view class="top_card">
<location-info :locationDetail='locationDetail' v-if="locationCode"></location-info>
</view>
<view class="tabs" v-if="locationCode" style="height: 100%;">
<u-line></u-line>
<scroll-view id="tab-bar" class="scroll-h" :scroll-x="true" :show-scrollbar="false">
<view class="title_tab">
<view v-for="(tab, index) in tabBars" :key="tab.id" class="uni-tab-item" :id="tab.id"
:data-current="index" @click="ontabtap">
<text class="uni-tab-item-title"
:class="tabIndex == index ? 'uni-tab-item-title-active' : ''">{{ tab.name }}</text>
</view>
</view>
</scroll-view>
<scroll-view :scroll-top="scrollTop" scroll-y="true" @scrolltoupper="upper" @scrolltolower="lower"
@scroll="scroll">
<view v-if="tabIndex == 0" v-for="(item, index) in summarysList">
<comLocationDetailCard :isShowPack="false" :dataContent="item" style='margin: 10rpx;'>
</comLocationDetailCard>
</view>
</scroll-view>
<scroll-view :scroll-top="scrollTop" scroll-y="true" @scrolltoupper="upper" @scrolltolower="lower"
@scroll="scroll">
<view v-if="tabIndex == 1" v-for="(item, index) in detailList">
<comLocationDetailCard :dataContent="item" style='margin: 10rpx;'></comLocationDetailCard>
</view>
</scroll-view>
<!-- 预计入 -->
<scroll-view :scroll-top="scrollTop" scroll-y="true" @scrolltoupper="upper" @scrolltolower="lower"
@scroll="scroll">
<view v-if="tabIndex == 2" v-for="(item, index) in detailList">
<comLocationDetailCard :dataContent="item" style='margin: 10rpx;'></comLocationDetailCard>
</view>
</scroll-view>
<!-- 预计出 -->
<scroll-view :scroll-top="scrollTop" scroll-y="true" @scrolltoupper="upper" @scrolltolower="lower"
@scroll="scroll">
<view v-if="tabIndex == 3" v-for="(item, index) in detailList">
<comLocationDetailCard :dataContent="item" style='margin: 10rpx;'></comLocationDetailCard>
</view>
</scroll-view>
</view>
<win-scan-button @goScan='openScanPopup' v-if="locationCode!=''"></win-scan-button>
<winScanLocation ref="scanPopup" title="库位代码" @getLocation='getScanCode'></winScanLocation>
<show-modal ref="modal"></show-modal>
<comMessage ref="comMessage"></comMessage>
</view>
</template>
<script>
import {
getBalanceByLocationcode,
getBalanceByLocationcodeGroup
} from '@/api/request2.js';
import {
maxPageSize,
goHome
} from '@/common/basic.js';
import locationInfo from '@/mycomponents/location/locationInfo.vue'
import comBlankView from '@/mycomponents/common/comBlankView.vue'
import winScanButton from '@/mycomponents/scan/winScanButton.vue'
import comMessage from '@/mycomponents/common/comMessage.vue'
1 year ago
import comLocationDetailCard from '@/pages/query/coms/comLocationDetailCard.vue'
import winScanLocation from '@/mycomponents/scan/winScanLocation.vue'
export default {
name: 'location',
components: {
locationInfo,
comBlankView,
winScanButton,
comMessage,
comLocationDetailCard,
winScanLocation
},
data() {
return {
locationDetail: {},
locationCode: '',
summarys: [],
balances: [],
dataIn: [],
dataOut: [],
// 每页数据量
pageSize: 1000,
// 当前页
pageCurrent: 1,
// 数据总量
tabIndex: 0,
tabBars: [{
name: '汇总',
id: 'huizong'
},
{
name: '明细',
id: 'mingxi'
},
// {
// name: '预计入',
// id: 'in'
// },
// {
// name: '预计出',
// id: 'out'
// }
],
scrollTop: 0,
old: {
scrollTop: 0
},
detailList: [],
summarysList: []
};
},
onLoad() {},
onNavigationBarButtonTap(e) {
if (e.index === 0) {
goHome();
}
},
filters: {
1 year ago
},
mounted() {
this.openScanPopup()
},
methods: {
openScanPopup() {
this.$refs.scanPopup.openScanPopup();
},
closeScanPopup() {
this.$refs.scanPopup.closeScanPopup();
},
getScanCode(location, code) {
this.locationCode = '';
this.summarys = [];
this.balances = [];
this.locationCode = code;
this.locationDetail = location
this.getContentByTab(this.tabIndex);
},
getSummary() {
let that = this;
uni.showLoading({
title: "加载中...",
mask: true
});
getBalanceByLocationcodeGroup(this.locationCode).then(res => {
uni.hideLoading();
if (res.data.list.length > 0) {
this.summarysList = this.setShowList(res.data.list)
} else {
this.showMessage('未查找到库位【' + this.locationCode + '】');
}
}).catch(error => {
uni.hideLoading();
this.showMessage(error);
})
},
getDetailList() {
let that = this;
uni.showLoading({
title: "加载中...",
mask: true
});
getBalanceByLocationcode(this.locationCode).then(res => {
uni.hideLoading();
if (res.data.total > 0) {
this.detailList = this.setShowList(res.data.list)
} else {
this.showMessage('未查找到库位【' + this.locationCode + '】');
}
}).catch(error => {
uni.hideLoading();
this.showMessage(error);
})
},
setShowList(list) {
var resultlist = [];
list.forEach(res => {
var temp = resultlist.find(res1 =>
res1.itemCode == res.itemCode)
if (temp == undefined) {
var data = {
itemCode: res.itemCode,
qty: Number(res.qty),
uom: res.uom,
list: []
}
var item = {
packingNumber: res.packingNumber,
batch: res.batch,
uom: res.uom,
qty: Number(res.qty),
inventoryStatus: res.inventoryStatus,
}
data.list.push(item)
resultlist.push(data)
} else {
temp.qty += Number(res.qty)
var item = {
packingNumber: res.packingNumber,
batch: res.batch,
uom: res.uom,
qty: Number(res.qty),
inventoryStatus: res.inventoryStatus,
}
temp.list.push(item)
}
})
return resultlist;
},
ontabtap(e) {
let index = e.target.dataset.current || e.currentTarget.dataset.current;
this.tabIndex = index;
this.getContentByTab(this.tabIndex);
},
getContentByTab(index) {
if (index === 0) {
this.getSummary();
} else if (index === 1) this.getDetailList()
else if (index === 2) {
this.dataIn = this.balances;
} else if (index == 3) {
this.dataOut = this.balances;
}
},
upper: function(e) {
// console.log(e)
},
lower: function(e) {
// console.log(e)
},
scroll: function(e) {
// console.log(e)
this.old.scrollTop = e.detail.scrollTop;
},
showMessage(message) {
this.$refs.comMessage.showWarningMessage(message, res => {
if (res) {
this.afterCloseMessage()
}
});
},
afterCloseMessage() {
if (this.$refs.scanPopup != undefined) {
this.$refs.scanPopup.getfocus();
}
1 year ago
}
}
};
</script>
<style scoped lang="scss">
page {
height: 100%;
}
</style>