修复 foreach循环 发送请求时,可能会导致死锁的问题,切换成for...of 加 同步请求
| | |
| | | <template> |
| | | <view> |
| | | <uni-popup ref="popup" type="bottom" @change="popupChangeHandler"> |
| | | <view class="content"> |
| | | <view class="search-condition"> |
| | | <view class="title"><text>源单单号: </text></view> |
| | | <view class="right"><input type="text" v-model="HSourceBillNo" /></view> |
| | | </view> |
| | | <view class="search-condition"> |
| | | <view class="title"><text>物料: </text></view> |
| | | <view class="right"><input type="text" v-model="HMater" /></view> |
| | | </view> |
| | | <view class="search-condition"> |
| | | <view class="title"><text>关联项: </text></view> |
| | | <view class="right"><input type="text" v-model="HCustom" /></view> |
| | | </view> |
| | | <view class="buttons"> |
| | | <view style="flex: 1;"></view> |
| | | <button size="mini" type="primary" @click="search">搜索</button> |
| | | <button size="mini" type="primary" @click="exit">退出</button> |
| | | </view> |
| | | <scroll-view id="#BillListPanel" scroll-y="true" style="height: 55vh;"> |
| | | <view class="options-wrapper" v-show="HBillList.length != 0"> |
| | | <uni-card v-for="(bill, index) in HBillList[curPage-1]" :key="index" :title="bill['物料名称']" |
| | | :extra="`数量: ${bill['数量']}`" @tap="clickCard(bill['HSourceInterID'], bill['单据号'])"> |
| | | <view class="item"> |
| | | <view class="left">单据号: </view> |
| | | <view class="right">{{bill['单据号']}}</view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="left">物料代码: </view> |
| | | <view class="right">{{bill['物料代码']}}</view> |
| | | </view> |
| | | <!-- <view class="item"> |
| | | <view> |
| | | <uni-popup ref="popup" type="bottom" @change="popupChangeHandler"> |
| | | <view class="content"> |
| | | <view class="search-condition"> |
| | | <view class="title"><text>源单单号: </text></view> |
| | | <view class="right"><input type="text" v-model="HSourceBillNo" @confirm="getBillList" /></view> |
| | | </view> |
| | | <view class="search-condition"> |
| | | <view class="title"><text>物料: </text></view> |
| | | <view class="right"><input auto-focus type="text" v-model="HMater" @confirm="getBillList" /></view> |
| | | </view> |
| | | <view class="search-condition"> |
| | | <view class="title"><text>关联项: </text></view> |
| | | <view class="right"><input type="text" v-model="HCustom" @confirm="getBillList" /></view> |
| | | </view> |
| | | <view class="buttons"> |
| | | <view style="flex: 1;"></view> |
| | | <button size="mini" type="primary" @click="search">搜索</button> |
| | | <button v-if="MultiSourceBill" size="mini" type="primary" @click="ret">返回</button> |
| | | <button size="mini" type="primary" @click="exit">退出</button> |
| | | </view> |
| | | <scroll-view id="#BillListPanel" scroll-y="true" style="height: 55vh;"> |
| | | <view class="options-wrapper" v-show="HBillList.length != 0"> |
| | | <uni-card :is-active="bill.isActive" v-for="(bill, index) in HBillList[curPage-1]" :key="index" |
| | | :title="bill['物料名称']" :extra="`数量: ${bill['数量']}`" |
| | | @tap="clickCard(bill['HSourceInterID'], bill['单据号'], index)"> |
| | | <view class="item"> |
| | | <view class="left">单据号: </view> |
| | | <view class="right">{{bill['单据号']}}</view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="left">物料代码: </view> |
| | | <view class="right">{{bill['物料代码']}}</view> |
| | | </view> |
| | | <!-- <view class="item"> |
| | | <view class="left">物料名称: </view> |
| | | <view class="right">{{}}</view> |
| | | </view> --> |
| | | <view class="item"> |
| | | <view class="left">规格型号: </view> |
| | | <view class="right">{{bill['规格型号']}}</view> |
| | | </view> |
| | | </uni-card> |
| | | </view> |
| | | <view class="over" v-show="HBillList.length == 0">暂无数据</view> |
| | | </scroll-view> |
| | | <uni-pagination id="#pagination" title="标题文字" v-model="curPage" :pageSize="size" |
| | | :total="length"></uni-pagination> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="left">规格型号: </view> |
| | | <view class="right">{{bill['规格型号']}}</view> |
| | | </view> |
| | | </uni-card> |
| | | </view> |
| | | <view class="over" v-show="HBillList.length == 0">暂无数据</view> |
| | | </scroll-view> |
| | | <uni-pagination id="#pagination" title="标题文字" v-model="curPage" :pageSize="size" |
| | | :total="length"></uni-pagination> |
| | | </view> |
| | | |
| | | </uni-popup> |
| | | </view> |
| | | </uni-popup> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | CommonUtils |
| | | } from '../../utils/common'; |
| | | export default { |
| | | name: "BillListPopup", |
| | | data() { |
| | | return { |
| | | size: 20, |
| | | curPage: 1, |
| | | length: 0, |
| | | page: 0, |
| | | HSourceBillNo: '', |
| | | HMater: '', |
| | | HCustom: '', |
| | | HBillList: [], |
| | | panelHeight: 0, |
| | | }; |
| | | }, |
| | | props: { |
| | | HBillType: { |
| | | type: [String, Number], |
| | | required: true |
| | | }, |
| | | HSourceBillType: { |
| | | type: [String, Number], |
| | | required: true |
| | | }, |
| | | HStockOrgID: { |
| | | type: [String, Number], |
| | | required: true |
| | | }, |
| | | }, |
| | | model: { |
| | | prop: "HSourceBill", |
| | | event: 'change' |
| | | }, |
| | | methods: { |
| | | popupChangeHandler(e) { |
| | | if (e.show === true) { |
| | | this.getBillList() |
| | | } else { |
| | | // 清理资源 |
| | | this.size = 20 |
| | | this.curPage = 1 |
| | | this.length = 0 |
| | | this.page = 0 |
| | | this.HSourceBillNo = '' |
| | | this.HMater = '' |
| | | this.HCustom = '' |
| | | this.HBillList = [] |
| | | } |
| | | }, |
| | | exit() { |
| | | this.$refs.popup.close(); |
| | | }, |
| | | search() { |
| | | this.getBillList() |
| | | }, |
| | | showPopup() { |
| | | this.$refs.popup.open(); |
| | | }, |
| | | clickCard(interid, billno) { |
| | | uni.$emit('BillSelectComplete', { |
| | | HInterID: interid, |
| | | HBillNo: billno |
| | | }) |
| | | // this.exit() |
| | | }, |
| | | getBillList() { |
| | | this.HBillList = [] |
| | | this.length = 0 |
| | | this.page = 0 |
| | | this.curPage = 1 |
| | | CommonUtils.doRequest( |
| | | "/WEBSController/GetSourceBillList_Json", { |
| | | HBilltype: this.HBillType, |
| | | HSourceBillType: this.HSourceBillType, |
| | | HStockOrgID: this.HStockOrgID, |
| | | HSourceBillNo: this.HSourceBillNo || "", |
| | | HMater: this.HMater || "", |
| | | HCustom: this.HCustom || "" |
| | | }, |
| | | (res) => { |
| | | let { |
| | | data, |
| | | count, |
| | | Message |
| | | } = res.data |
| | | if (count == 1) { |
| | | console.log(data) |
| | | this.length = Array.from(data).length |
| | | const result = []; |
| | | for (let i = 0; i < data.length; i += this.size) { |
| | | result.push(data.slice(i, i + this.size)); |
| | | } |
| | | this.HBillList = result |
| | | this.page = result.length |
| | | } else { |
| | | uni.showToast({ |
| | | icon: 'none', |
| | | title: Message |
| | | }) |
| | | } |
| | | } |
| | | ) |
| | | }, |
| | | }, |
| | | } |
| | | import { |
| | | CommonUtils |
| | | } from '../../utils/common'; |
| | | export default { |
| | | name: "BillListPopup", |
| | | data() { |
| | | return { |
| | | size: 20, |
| | | curPage: 1, |
| | | length: 0, |
| | | page: 0, |
| | | HSourceBillNo: '', |
| | | HMater: '', |
| | | HCustom: '', |
| | | HBillList: [], |
| | | panelHeight: 0, |
| | | |
| | | multiSouceBillList: [] |
| | | }; |
| | | }, |
| | | props: { |
| | | HBillType: { |
| | | type: [String, Number], |
| | | required: true |
| | | }, |
| | | HSourceBillType: { |
| | | type: [String, Number], |
| | | required: true |
| | | }, |
| | | HStockOrgID: { |
| | | type: [String, Number], |
| | | required: true |
| | | }, |
| | | MultiSourceBill: { |
| | | type: Boolean, |
| | | default: false, |
| | | required: false |
| | | } |
| | | }, |
| | | model: { |
| | | prop: "HSourceBill", |
| | | event: 'change' |
| | | }, |
| | | methods: { |
| | | popupChangeHandler(e) { |
| | | if (e.show === true) { |
| | | this.getBillList() |
| | | } else { |
| | | // 清理资源 |
| | | this.size = 20 |
| | | this.curPage = 1 |
| | | this.length = 0 |
| | | this.page = 0 |
| | | this.HSourceBillNo = '' |
| | | this.HMater = '' |
| | | this.HCustom = '' |
| | | this.HBillList = [] |
| | | } |
| | | }, |
| | | exit() { |
| | | this.$refs.popup.close(); |
| | | }, |
| | | search() { |
| | | this.getBillList() |
| | | }, |
| | | ret() { |
| | | uni.$emit('BillSelectComplete', { |
| | | HInterID: 0, |
| | | HBillNo: 0, |
| | | enableMultiSourceBill: this.MultiSourceBill, |
| | | MultiSourceBillList: this.multiSouceBillList |
| | | }) |
| | | }, |
| | | showPopup() { |
| | | this.$refs.popup.open(); |
| | | }, |
| | | clickCard(interid, billno, index) { |
| | | if (this.MultiSourceBill == false) { // 非多源单模式 |
| | | uni.$emit('BillSelectComplete', { |
| | | HInterID: interid, |
| | | HBillNo: billno, |
| | | enableMultiSourceBill: this.MultiSourceBill |
| | | }) |
| | | } else { |
| | | this.$set(this.HBillList[this.curPage - 1][index], 'isActive', !this.HBillList[this.curPage - 1][ |
| | | index |
| | | ]['isActive']) |
| | | console.log(this.HBillList[this.curPage - 1][index]) |
| | | // 设置了多源单模式 |
| | | this.setMultiSourceBillList({ |
| | | HInterID: interid, |
| | | HBillNo: billno |
| | | }) |
| | | } |
| | | |
| | | // this.exit() |
| | | }, |
| | | setMultiSourceBillList(billInfo) { |
| | | let index = this.multiSouceBillList.findIndex(item => item.HInterID == billInfo.HInterID) |
| | | if (index == -1) { |
| | | this.multiSouceBillList.push(billInfo) |
| | | } else { |
| | | this.multiSouceBillList.splice(index, 1) |
| | | } |
| | | }, |
| | | getBillList() { |
| | | this.HBillList = [] |
| | | this.length = 0 |
| | | this.page = 0 |
| | | this.curPage = 1 |
| | | CommonUtils.doRequest( |
| | | "/WEBSController/GetSourceBillList_Json", { |
| | | HBilltype: this.HBillType, |
| | | HSourceBillType: this.HSourceBillType, |
| | | HStockOrgID: this.HStockOrgID, |
| | | HSourceBillNo: this.HSourceBillNo || "", |
| | | HMater: this.HMater || "", |
| | | HCustom: this.HCustom || "" |
| | | }, |
| | | (res) => { |
| | | let { |
| | | data, |
| | | count, |
| | | Message |
| | | } = res.data |
| | | if (count == 1) { |
| | | this.length = Array.from(data).length |
| | | const result = []; |
| | | for (let i = 0; i < data.length; i += this.size) { |
| | | result.push(data.slice(i, i + this.size)); |
| | | } |
| | | this.HBillList = result |
| | | this.page = result.length |
| | | } else { |
| | | uni.showToast({ |
| | | icon: 'none', |
| | | title: Message |
| | | }) |
| | | } |
| | | } |
| | | ) |
| | | }, |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | .content { |
| | | box-sizing: border-box; |
| | | border-radius: 15rpx 15rpx 0 0; |
| | | padding: 20rpx 20rpx 40rpx 20rpx; |
| | | background-color: #fff; |
| | | display: flex; |
| | | flex-direction: column; |
| | | gap: 10rpx; |
| | | .content { |
| | | box-sizing: border-box; |
| | | border-radius: 15rpx 15rpx 0 0; |
| | | padding: 20rpx 20rpx 40rpx 20rpx; |
| | | background-color: #fff; |
| | | display: flex; |
| | | flex-direction: column; |
| | | gap: 10rpx; |
| | | |
| | | .search-condition { |
| | | display: flex; |
| | | flex-direction: row; |
| | | align-items: center; |
| | | gap: 20rpx; |
| | | .search-condition { |
| | | display: flex; |
| | | flex-direction: row; |
| | | align-items: center; |
| | | gap: 20rpx; |
| | | |
| | | .title { |
| | | width: 5rem; |
| | | text-align: right; |
| | | } |
| | | .title { |
| | | width: 5rem; |
| | | text-align: right; |
| | | } |
| | | |
| | | .right { |
| | | flex: 1; |
| | | border-radius: 22rpx; |
| | | border: 1px solid #acacac; |
| | | height: auto; |
| | | .right { |
| | | flex: 1; |
| | | border-radius: 22rpx; |
| | | border: 1px solid #acacac; |
| | | height: auto; |
| | | |
| | | input { |
| | | width: 100%; |
| | | padding: 8rpx 20rpx; |
| | | font-size: 24rpx; |
| | | } |
| | | } |
| | | } |
| | | input { |
| | | width: 100%; |
| | | padding: 8rpx 20rpx; |
| | | font-size: 24rpx; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .buttons { |
| | | display: flex; |
| | | flex-direction: row; |
| | | gap: 20rpx; |
| | | justify-content: flex-end; |
| | | .buttons { |
| | | display: flex; |
| | | flex-direction: row; |
| | | gap: 20rpx; |
| | | justify-content: flex-end; |
| | | |
| | | >button { |
| | | display: inline-flex; |
| | | width: 4rem; |
| | | } |
| | | } |
| | | >button { |
| | | display: inline-flex; |
| | | width: 4rem; |
| | | } |
| | | } |
| | | |
| | | .options-wrapper { |
| | | padding: 20rpx; |
| | | display: grid; |
| | | grid-template-columns: repeat(1, 1fr); |
| | | gap: 20rpx; |
| | | .options-wrapper { |
| | | padding: 20rpx; |
| | | display: grid; |
| | | grid-template-columns: repeat(1, 1fr); |
| | | gap: 20rpx; |
| | | |
| | | >view { |
| | | margin: 0 !important; |
| | | box-sizing: border-box; |
| | | >view { |
| | | margin: 0 !important; |
| | | box-sizing: border-box; |
| | | |
| | | } |
| | | } |
| | | |
| | | .item { |
| | | .left { |
| | | display: inline-block; |
| | | width: 6rem; |
| | | } |
| | | .item { |
| | | .left { |
| | | display: inline-block; |
| | | width: 6rem; |
| | | } |
| | | |
| | | .right { |
| | | display: inline-block; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .right { |
| | | display: inline-block; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .uni-card[is-active] { |
| | | background-color: rgba(0, 122, 255, 0.2); |
| | | } |
| | | } |
| | | </style> |
| | |
| | | </view> |
| | | </view> |
| | | <BillListPopupVue ref="billList" :HBillType="hform.HBillType" :HSourceBillType="hform.HMainSourceBillType" |
| | | :HStockOrgID="hform.HStockOrgID"></BillListPopupVue> |
| | | :HStockOrgID="hform.HStockOrgID" :MultiSourceBill="enableMultiSourceBill"></BillListPopupVue> |
| | | <BarCodePopupVue ref="barcodePopup"></BarCodePopupVue> |
| | | </view> |
| | | </template> |
| | |
| | | |
| | | this.getRelationStore() |
| | | |
| | | uni.$on('BillSelectComplete', (e) => { |
| | | console.log("接收到的消息: ", e.HBillNo) |
| | | this.getHBarCodeData(e.HBillNo) |
| | | this.$refs.billList.exit() |
| | | uni.$on('BillSelectComplete', async (e) => { |
| | | console.log("接收到的消息: ", e) |
| | | console.log("是否应用多源单: ", e.enableMultiSourceBill) |
| | | if(e.enableMultiSourceBill){ |
| | | |
| | | for(let item of e.MultiSourceBillList) { |
| | | try{ |
| | | await this.getHBarCodeData(item.HBillNo) |
| | | }catch { |
| | | return |
| | | } |
| | | } |
| | | this.$refs.billList.exit() |
| | | if(e.MultiSourceBillList.length != 0){ |
| | | this.showHSourceBillNo = false |
| | | } |
| | | |
| | | }else { |
| | | this.getHBarCodeData(e.HBillNo) |
| | | this.$refs.billList.exit() |
| | | } |
| | | |
| | | |
| | | |
| | | }) |
| | | }, |
| | | onUnload() { |
| | | uni.$off('BillSelectComplete') |
| | | }, |
| | | computed: { |
| | | enableMultiSourceBill: { |
| | | get() { |
| | | if(uni.getStorageSync("Organization").includes("海诚") && this.hform.HMainSourceBillType == 3720){ |
| | | return true |
| | | } |
| | | return false |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | async qrCodeDisplay() { |
| | | try { |
| | |
| | | } |
| | | }, |
| | | //选中源单 |
| | | getHBarCodeData(HBarCode) { |
| | | async getHBarCodeData(HBarCode) { |
| | | if (!this.hform.HFIFOWHName) { |
| | | this.hform.HFIFOWHID = 0 |
| | | } |
| | | uni.request({ |
| | | url: this.serverUrl + '/WEBSController/get_SourceBarCode_MateOut_Json', |
| | | data: { |
| | | HInterID: this.hform.HInterID, |
| | | HBillNo: this.hform.HBillNo, |
| | | HBillType: this.hform.HBillType, |
| | | HSourceBillNo: HBarCode, |
| | | HSourceBillType: this.hform.HMainSourceBillType, |
| | | HMaker: this.hform.HMaker, |
| | | HStockOrgID: this.hform.HStockOrgID, |
| | | HFIFOWHID: this.hform.HFIFOWHID, |
| | | HPTQty: this.hform.HPTQty || 0, |
| | | HPlanMode: this.hform.HPlanMode || 0 |
| | | }, |
| | | success: (res) => { |
| | | if (res.data.count == 1) { |
| | | var data = res.data.data |
| | | console.log(2, data); |
| | | this.hform.HSupName = data.hSupNameField |
| | | this.hform.HSupID = data.hSupIDField |
| | | if (data.hDeptIDField != 0) { |
| | | this.hform.HDeptID = data.hDeptIDField |
| | | this.hform.HDeptName = data.hDeptNameField |
| | | } |
| | | this.hform.HSourceBillNo = data.hSourceBillNoField |
| | | this.showHMainSourceBillType = false |
| | | if (data.hMulSourceFlagField == 0) { |
| | | this.showHSourceBillNo = false |
| | | } |
| | | this.tabs = 2 |
| | | this.showHSupName = false |
| | | this.barCodeFocus = true |
| | | this.playSound(1) |
| | | this.DisBillEntryList() |
| | | } else { |
| | | this.playSound(0) |
| | | this.refreshHSourceBillState() |
| | | uni.showToast({ |
| | | title: res.data.Message, |
| | | icon: 'none' |
| | | }) |
| | | } |
| | | }, |
| | | fail: (res) => { |
| | | this.playSound(0) |
| | | this.refreshHSourceBillState() |
| | | console.log(res); |
| | | uni.showToast({ |
| | | title: '接口请求失败', |
| | | icon: 'none' |
| | | }) |
| | | }, |
| | | }); |
| | | return new Promise((resolve, reject) => { |
| | | uni.request({ |
| | | url: this.serverUrl + '/WEBSController/get_SourceBarCode_MateOut_Json', |
| | | data: { |
| | | HInterID: this.hform.HInterID, |
| | | HBillNo: this.hform.HBillNo, |
| | | HBillType: this.hform.HBillType, |
| | | HSourceBillNo: HBarCode, |
| | | HSourceBillType: this.hform.HMainSourceBillType, |
| | | HMaker: this.hform.HMaker, |
| | | HStockOrgID: this.hform.HStockOrgID, |
| | | HFIFOWHID: this.hform.HFIFOWHID, |
| | | HPTQty: this.hform.HPTQty || 0, |
| | | HPlanMode: this.hform.HPlanMode || 0 |
| | | }, |
| | | success: (res) => { |
| | | if (res.data.count == 1) { |
| | | var data = res.data.data |
| | | console.log(2, data); |
| | | this.hform.HSupName = data.hSupNameField |
| | | this.hform.HSupID = data.hSupIDField |
| | | if (data.hDeptIDField != 0) { |
| | | this.hform.HDeptID = data.hDeptIDField |
| | | this.hform.HDeptName = data.hDeptNameField |
| | | } |
| | | this.hform.HSourceBillNo = data.hSourceBillNoField |
| | | this.showHMainSourceBillType = false |
| | | if (data.hMulSourceFlagField == 0) { |
| | | this.showHSourceBillNo = false |
| | | } |
| | | this.tabs = 2 |
| | | this.showHSupName = false |
| | | this.barCodeFocus = true |
| | | this.playSound(1) |
| | | this.DisBillEntryList() |
| | | resolve() |
| | | } else { |
| | | this.playSound(0) |
| | | this.refreshHSourceBillState() |
| | | uni.showToast({ |
| | | title: res.data.Message, |
| | | icon: 'none' |
| | | }) |
| | | reject() |
| | | } |
| | | }, |
| | | fail: (res) => { |
| | | this.playSound(0) |
| | | this.refreshHSourceBillState() |
| | | console.log(res); |
| | | uni.showToast({ |
| | | title: '接口请求失败', |
| | | icon: 'none' |
| | | }) |
| | | reject() |
| | | }, |
| | | }); |
| | | }) |
| | | |
| | | }, |
| | | //扫条码处理 |
| | | getCode(HBarCode) { |