From 4a1454246bfe04025ffd63fe348e76ef89cb0050 Mon Sep 17 00:00:00 2001
From: wtt <1985833171@qq.com>
Date: 星期三, 17 九月 2025 17:40:09 +0800
Subject: [PATCH] 生产领料添加扫码选择源单
---
components/BillListPopup/BillListPopup_Check.vue | 310 ++++++++++++++++++++++++++++++++++++++++++++
pages/shengchanlingliao/form.vue | 70 +++++++++
2 files changed, 376 insertions(+), 4 deletions(-)
diff --git a/components/BillListPopup/BillListPopup_Check.vue b/components/BillListPopup/BillListPopup_Check.vue
new file mode 100644
index 0000000..ee9efde
--- /dev/null
+++ b/components/BillListPopup/BillListPopup_Check.vue
@@ -0,0 +1,310 @@
+<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="HBillNo" @confirm="getBillList" /></view>
+ </view>
+ <view class="search-condition">
+ <view class="title"><text>鐗╂枡: </text></view>
+ <view class="right"><input type="text" :focus="enablefocus" 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" :class="bill.isActive?'uni-card--is-active':''"
+ v-for="(bill, index) in HBillList[curPage-1]" :key="index" :title="bill['鐗╂枡鍚嶇О']"
+ :extra="`鏁伴噺: ${bill['鏁伴噺']}`" @tap="clickCard(bill['HInterID'], bill['鍗曟嵁鍙�'], index)">
+ <view class="item">
+ <view class="left">鍗曟嵁鍙�: </view>
+ <view class="right">{{bill['鍗曟嵁鍙�']}}</view>
+ </view>
+ <view class="item">
+ <view class="left">鐗╂枡浠g爜: </view>
+ <view class="right">{{bill['鐗╂枡浠g爜']}}</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>
+ <view class="item" v-if="bill['鐢熶骇浠诲姟鍗曞彿']">
+ <view class="left">鐢熶骇璁㈠崟鍙�: </view>
+ <view class="right">{{bill['鐢熶骇浠诲姟鍗曞彿']}}</view>
+ </view>
+ <view class="item" v-if="bill['娆惧彿']">
+ <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>
+</template>
+
+<script>
+ import {
+ CommonUtils
+ } from '../../utils/common';
+ export default {
+ name: "BillListPopup_Check",
+ data() {
+ return {
+ enablefocus: false,
+ size: 20,
+ curPage: 1,
+ length: 0,
+ page: 0,
+ HBillNo: '',
+ HMater: this.HMater,
+ HCustom: '',
+ HBillList: [],
+ panelHeight: 0,
+
+ multiSouceBillList: []
+ };
+ },
+ props: {
+ HBillType: {
+ type: [String, Number],
+ required: true
+ },
+ HStockOrgID: {
+ type: [String, Number],
+ required: true
+ },
+ MultiSourceBill: {
+ type: Boolean,
+ default: false,
+ required: false
+ },
+ HMater:{
+ type: [String, Number],
+ default: '',
+ required: false
+ }
+ },
+ model: {
+ prop: "HSourceBill",
+ event: 'change'
+ },
+ methods: {
+ popupChangeHandler(e) {
+ if (e.show === true) {
+ this.getBillList()
+ }
+ },
+ async exit() {
+ this.size = 20
+ this.curPage = 1
+ this.length = 0
+ this.page = 0
+ this.HBillNo = ''
+ this.HMater = ''
+ this.HCustom = ''
+ this.HBillList = []
+ this.enablefocus = false
+ this.multiSouceBillList = []
+ // 闇�瑕佺瓑寰呴〉闈㈠唴鐨勬暟鎹祴鍊煎畬姣�
+ await this.$nextTick()
+ this.$refs.popup.close();
+ },
+ search() {
+ this.getBillList()
+ },
+ ret() {
+ console.log('this.MultiSourceBill: ', this.MultiSourceBill);
+ 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,
+ HIsActive: this.HBillList[this.curPage - 1][index]['isActive']
+ })
+ }
+
+ // this.exit()
+ },
+ setMultiSourceBillList(billInfo) {
+ let index = this.multiSouceBillList.findIndex(item => item.HInterID == billInfo.HInterID)
+ if (index == -1) {
+ billInfo['count'] = 1
+ this.multiSouceBillList.push(billInfo)
+ } else {
+ if (billInfo.HIsActive) {
+ // 濡傛灉瀵瑰簲鍗曟嵁浼犲叆鐨勬槸鍚︽縺娲绘暟鏄痶rue锛屽垯璁℃暟鍣�+1
+ this.multiSouceBillList[index]['count']++;
+ } else {
+ // 濡傛灉瀵瑰簲鍗曟嵁浼犲叆鐨勬槸鍚︽縺娲绘暟鏄痜alse锛屽垯璁℃暟鍣�-1
+ this.multiSouceBillList[index]['count']--;
+ }
+ if(this.multiSouceBillList[index]['count'] == 0){
+ // 娌℃湁閫変腑鐨勫崟鎹紝鍒欑Щ闄ょ紦瀛樹腑鐨勬暟鎹�
+ this.multiSouceBillList.splice(index, 1)
+ }
+ }
+ console.log('this.multiSouceBillList: ', this.multiSouceBillList);
+ },
+ getBillList() {
+ this.HBillList = []
+ this.length = 0
+ this.page = 0
+ this.curPage = 1
+ CommonUtils.doRequest(
+ "/WEBSController/GetCheckBillList_Json", {
+ HBillType: this.HBillType,
+ HStockOrgID: this.HStockOrgID,
+ HBillNo: this.HBillNo || "",
+ 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
+ setTimeout(() => {
+ this.enablefocus = true
+ }, 500)
+ } else {
+ setTimeout(() => {
+ this.enablefocus = true
+ }, 500)
+ 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;
+
+ .search-condition {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ gap: 20rpx;
+
+ .title {
+ width: 5rem;
+ text-align: right;
+ }
+
+ .right {
+ flex: 1;
+ border-radius: 22rpx;
+ border: 1px solid #acacac;
+ height: auto;
+
+ input {
+ width: 100%;
+ padding: 8rpx 20rpx;
+ font-size: 24rpx;
+ }
+ }
+ }
+
+ .buttons {
+ display: flex;
+ flex-direction: row;
+ gap: 20rpx;
+ justify-content: flex-end;
+
+ >button {
+ display: inline-flex;
+ width: 4rem;
+ }
+ }
+
+ .options-wrapper {
+ padding: 20rpx;
+ display: grid;
+ grid-template-columns: repeat(1, 1fr);
+ gap: 20rpx;
+
+ >view {
+ margin: 0 !important;
+ box-sizing: border-box;
+
+ }
+
+ .item {
+ .left {
+ display: inline-block;
+ width: 6rem;
+ }
+
+ .right {
+ display: inline-block;
+ }
+ }
+ }
+
+ .uni-card--is-active {
+ background-color: rgba(0, 122, 255, 0.2);
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/pages/shengchanlingliao/form.vue b/pages/shengchanlingliao/form.vue
index f91b57b..ffbb9c9 100644
--- a/pages/shengchanlingliao/form.vue
+++ b/pages/shengchanlingliao/form.vue
@@ -51,6 +51,16 @@
style="margin-left: 10rpx;background-color: #3A78FF;padding: 6rpx;color: #fff;border-radius: 100%;"
size="20" @click="toScanCode"></uni-icons>
</view>
+ <view class="form-item" v-show="showHBillNo">
+ <view class="title">鍗曟嵁鍙�(鐗╂枡):</view>
+ <view class="right" style="width: 380rpx;">
+ <input name="HBillNoMater" :focus="HBillNoFocusMater" v-model="HBillNoMater" placeholder="璇锋壂鎻�(鎴栬緭鍏�)鏉$爜"
+ @confirm="showBillList()" />
+ </view>
+ <uni-icons type="scan"
+ style="margin-left: 10rpx;background-color: #3A78FF;padding: 6rpx;color: #fff;border-radius: 100%;"
+ size="20" @click="toScanCodeMater"></uni-icons>
+ </view>
<view class="form-item" v-show="!showHBillNo">
<view class="title">鍗曟嵁鍙�:</view>
<view class="righton">
@@ -175,10 +185,13 @@
<button class="btn-c" size="mini" @tap="goBack">閫�鍑�</button>
</view>
</view>
+ <BillListPopupVue ref="billList" :HBillType="hform.HBillType" :HMater='HBillNoMater'
+ :HStockOrgID="hform.HStockOrgID" :MultiSourceBill="false"></BillListPopupVue>
</view>
</template>
<script>
import getDateTime from '@/utils/getdateTime.js';
+ import BillListPopupVue from '../../components/BillListPopup/BillListPopup_Check.vue';
import {
getUserInfo
} from "@/utils/auth.js";
@@ -193,8 +206,10 @@
HModName: 'Kf_MateOutBill_Check_PDA',
ModRightName: 'CE_MateOutCheck',
OperationType: 1,
-
+
HBillNoFocus: false,
+ HBillNoFocusMater:false,
+ HBillNoMater:'',
showHBillNo: true,
tabs: 1,
linterid: '',
@@ -242,7 +257,10 @@
}
}
},
- onLoad(e) {
+ components:{
+ BillListPopupVue
+ },
+ onLoad(e) {
console.log(e, this.userInfo)
this.OperationType = e.OperationType
if (e.HBillNo) {
@@ -253,6 +271,29 @@
this.refreshHBillNoFocus()
}
this.getHBaseList()
+ uni.$on('BillSelectComplete', async (e) => {
+ console.log("鎺ユ敹鍒扮殑娑堟伅: ", e)
+ console.log("鏄惁搴旂敤澶氭簮鍗�: ", e.enableMultiSourceBill)
+ if(e.enableMultiSourceBill){
+ for(let item of e.MultiSourceBillList) {
+ try{
+ this.hform.HBillNo = e.HBillNo
+ await this.GetMeesageByBillNo()
+ }catch {
+ return
+ }
+ }
+ this.$refs.billList.exit()
+ // if(e.MultiSourceBillList.length != 0){
+ // this.showHSourceBillNo = false
+ // }
+
+ }else {
+ this.hform.HBillNo = e.HBillNo
+ this.GetMeesageByBillNo()
+ this.$refs.billList.exit()
+ }
+ })
},
methods: {
toScanCode2() {
@@ -848,8 +889,29 @@
}
}
});
- }
- }
+ },
+ //鍗曟嵁鏌ヨ鍒楄〃鏄剧ず
+ showBillList(){
+ this.$refs.billList.showPopup()
+ },
+ toScanCode() {
+ var mpaasScanModule = uni.requireNativePlugin("Mpaas-Scan-Module")
+ mpaasScanModule.mpaasScan({
+ 'hideAlbum': true,
+ 'timeoutInterval': '10', //瓒呮椂鏃堕棿
+ 'timeoutText': '鏈瘑鍒埌浜岀淮鐮�' //瓒呮椂鎻愰啋
+ }, (ret) => {
+ console.log(ret.resp_result)
+ // if(this.hform.HBarCode == '*'){
+ // this.hform.HBarCode = this.hform.HBarCode + ret.resp_result
+ // }else{
+ // this.hform.HBarCode = ret.resp_result
+ // }
+ this.HBillNoMater = ret.resp_result
+ this.$refs.billList.showPopup()
+ })
+ },
+ }
}
</script>
--
Gitblit v1.9.1