From fbbbc66329808249c7a0689f2efca6c79a6bf892 Mon Sep 17 00:00:00 2001 From: lty <876263681@qq.com> Date: 星期四, 28 八月 2025 08:37:11 +0800 Subject: [PATCH] # --- pages/basics/order.vue | 390 +++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 333 insertions(+), 57 deletions(-) diff --git a/pages/basics/order.vue b/pages/basics/order.vue index d8183e3..e04b1fe 100644 --- a/pages/basics/order.vue +++ b/pages/basics/order.vue @@ -8,62 +8,106 @@ </view> <view class="square-content"> <view class="content-input"> - <input v-model="barcode" type="text" placeholder="鎵爜 / 杈撳叆" maxlength="8" - :focus="barcodeFocus" @focus="focuss"> + <input v-model="barcode" type="text" placeholder="鎵爜 / 杈撳叆" maxlength="10" + :focus="barcodeFocus" @input="barcodeInput" placeholder-style="line-height: 85rpx;"> <uni-icons type="closeempty" size="20" color="#dadada" @click="removeBarcode()"></uni-icons> </view> </view> </view> - <view class="square-2"> - <view class="square-title"> - <view class="title-sign"><view class="sign"></view></view> - <view class="title-text"><text>鍗曟嵁缂栧彿</text></view> + <view class="square-3"> + <!-- 鏍囬閮ㄥ垎 --> + <view class="square-title"> + <view class="title-sign"><view class="sign"></view></view> + <view class="title-text"><text>鍗曟嵁缂栧彿</text></view> + </view> + + <!-- 鍐呭鍖哄煙 --> + <view class="square-content" style="display: flex; align-items: center;"> + <!-- 涓嬫媺杈撳叆妗� --> + <view class="content-input" style="flex: 1;"> + <uni-combox + v-model="orderNo" + :candidates="orderNoList" + placeholder="璇疯緭鍏� / 閫夋嫨璁㈠崟鍙�" + placeholderStyle="line-height: 60rpx; font-size: 30rpx; color: #999;" + @input="getOrderDet" + @change="onOrderSelect" + /> </view> - <view class="square-content"> - <view class="content-input"> - <input v-model="order" type="text" placeholder="鎵爜 / 杈撳叆" @input="findOrder()" - :focus="focus" @focus="focuss"> - <uni-icons type="closeempty" size="20" color="#dadada" @click="removeOrder()"></uni-icons> - </view> + + <!-- 妫�绱㈡寜閽� --> + <view style="width: 80px; display: flex; align-items: center; justify-content: center; margin-left: 10rpx;"> + <button size="mini" type="primary" @click="getOrderDetlByOrderNo()">妫�绱�</button> </view> + </view> </view> + + + <view class="square-1"> <view class="square-title"> <view class="title-sign"><view class="sign"></view></view> - <view class="title-text"><text>鍟嗗搧鍒楄〃</text></view> + <view class="title-text" style="width: 200rpx;"><text>鍟嗗搧鍒楄〃</text></view> + <view v-show="matList.length != 0" class="lable"> + <label class="label-btn" style="width: 170rpx;line-height: 95rpx;" > + <checkbox :checked="check" @click="allChecked()">{{checkText}}</checkbox> + </label> + <label class="label-btn" > + <text @click="reChecked()">鍙嶉��</text> + </label> + <label > + <uni-icons type="trash" size="25" color="#a5a5a5" @click="remove()"></uni-icons> + </label> + </view> </view> + </view> - <view class="square-none" v-show="orderList.length === 0"> + <view class="square-none" v-show="matList.length === 0"> <view class="v-show">鏆傛棤鏇村鏁版嵁...</view> </view> - <checkbox-group> - <view v-for="(item,index) in orderList" :key="index" class="data-list bg-false" :class="'bg-'+item.checked" > + <checkbox-group @change="checkbox"> + <view v-for="(item,index) in matList" :key="index" class="data-list bg-false" :class="'bg-'+item.checked" > + <label class="left-check-box"> + <checkbox :value="item.id+''" :checked="item.checked" style="display: block;" /> + </label> <view class="data-list-left"> - <view class="matnr"><text style="width: 400rpx;">缂栫爜锛歿{item.matnr}}</text></view> - <view><text style="width: 400rpx;">鍝佸悕锛歿{item.maktx}}</text></view> - <view><text style="width: 400rpx;">鎵瑰彿锛歿{item.batch}}</text></view> + <view class="matnr"><text style="width: 700rpx;">缂栫爜锛歿{item.matnr}}</text></view> + <view><text style="width: 700rpx;">鍝佸悕锛歿{item.maktx}}</text></view> + <view><text style="width: 700rpx;">瑙勬牸锛歿{item.specs}}</text></view> <view> - <text style="width: 400rpx;">鏁伴噺锛歿{item.anfme}}</text> + <text style="width: 700rpx;">鏁伴噺锛歿{item.anfme}}</text> </view> </view> <view class="data-list-right"> <label><uni-icons type="compose" size="20" color="#a5a5a5" @click="revise(item,index)"></uni-icons></label> - <label><uni-icons type="trash" size="25" color="#a5a5a5" @click="remove(item,index)"></uni-icons></label> + <!-- list涓垹闄ら敭 --> + <!-- <label><uni-icons type="trash" size="25" color="#a5a5a5" @click="remove(item,index)"></uni-icons></label> --> </view> </view> </checkbox-group> </scroll-view> + + <!-- 搴曢儴鎸夐挳 --> <view class="footer flex justify-around"> - <view> - <button class="cu-btn lg" @click="resst()">閲嶇疆</button> - </view> - <view> - <button class="cu-btn lg pakin-btn bg-blue" @click="comb()">缁勬墭</button> - </view> + <!-- 搴曢儴鍏ㄩ�� 鍙嶉�夋寜閽� --> + <!-- <label class="label-btn" style="width: 170rpx;"> + <checkbox :checked="check" @click="allChecked()">{{checkText}}</checkbox> + </label> + <label class="label-btn" style="width: 100rpx;"> + <text @click="reChecked()">鍙嶉��</text> + </label> --> + + <label class="label-btn" style="width: 150rpx;"> + <button class="cu-btn" @click="resst()">閲嶇疆</button> + </label> + <label class="label-btn"> + <button class="cu-btn bg-blue " @click="comb()">缁勬墭</button> + </label> </view> + <view> <!-- 淇敼鏁伴噺 --> <uni-popup ref="revise" background-color="#fff" @change="change"> @@ -75,10 +119,11 @@ <view class="text-box"> <text>鍙粍鏁伴噺锛歿{enableQty}}</text> </view> - <view class="changeBox"> + <view class="changeBox flex justify-around"> <view class="num-box"> <uni-number-box v-model="count" :min="minCount" :max="maxCount" color="#747474" @change="changeValue"/> </view> + <button class="cu-btn" @click="changeMax">max</button> </view> <view class="revise-box-buttom"> <view> @@ -97,6 +142,7 @@ export default { data() { return { + commonUrl:null, barcode: '', barcodeFocus:true, focus:false, @@ -104,15 +150,19 @@ searchBox: 'hide', pick:'hide', order:null, - orderNo:null, - orderList:[], + matList:[], result: '', count:'', minCount:0, maxCount:'', rowNum:'', enableQty:'', - + check:false, + checkText:'鍏ㄩ��', + checkedData:[], + orderNo: '', + orderNoList: [], + showDropdown: false } }, mounted(){ @@ -120,8 +170,108 @@ this.baseIP = UIP; const UPORT = uni.getStorageSync('UPORT'); this.basePORT = UPORT + const PROJ = uni.getStorageSync('UPROJ'); + this.baseUrl = PROJ + this.getUrl() }, methods: { + getOrderDet(orderNo) { + if (!orderNo || orderNo.trim() === '') return; + uni.request({ + url: this.commonUrl + '/mobile/order/search/orderNoList/auth', + method: 'GET', + data: { orderNo }, + header: { + token: uni.getStorageSync('token') + }, + success: res => { + const list = res.data.data || []; + this.orderNoList = list.map(o => o.orderNo); + } + }); + }, + + onOrderSelect(order) { + this.orderNo = order; + // 鍙�夛細鑷姩瑙﹀彂鏌ヨ + // this.getOrderDetlByOrderNo(); + }, + getOrderDetlByOrderNo() { + if (!this.orderNo) { + uni.showToast({ title: '璇烽�夋嫨璁㈠崟', icon: 'none' }); + return; + } + let that = this; + uni.request({ + url: that.commonUrl + '/mobile/order/search/orderNo/auth', + data: { + orderNo: that.orderNo + }, + header: { + token: uni.getStorageSync('token') + }, + success(result) { + let res = result.data; + console.log(res.data[0]); + if (res.code === 200) { + if (res.data) { + uni.showLoading(); + that.matList = res.data[0].combMats; + that.initAnfme(); + console.log(that.matList); + } + } else if (res.code == 403) { + uni.showToast({ title: res.msg, icon: "none", position: 'top' }); + setTimeout(() => { + uni.reLaunch({ + url: '../login/login' + }); + }, 1000); + } else { + uni.showToast({ title: res.msg, icon: "none", position: 'top' }); + } + } + }); + }, + + + + selectOrder(orderNo) { + this.order = orderNo + this.showDropdown = false + }, + removeOrder() { + this.order = '' + this.orderSuggestions = [] + this.showDropdown = false + }, + // 鑾峰彇url + getUrl() { + this.commonUrl = this.baseHttp + this.baseIP + ':' +this.basePORT + "/" +this.baseUrl + }, + // barcode input 浜嬩欢 + barcodeInput() { + var len = this.barcode.length + if (len != 8) { + uni.showToast({title: '鎵樼洏鐮佹湁璇閲嶈瘯', icon: "none", position: 'top'}); + this.barcodeFocuss() + return; + } + if (len == 8) { + this.focuss() + } + }, + // 鎵樼洏鐮佹湁璇噸缃� + barcodeFocuss() { + // #ifdef APP + let that = this; + that.barcodeFocus = false; + setTimeout(()=>{ + that.barcode = ''; + that.barcodeFocus = true; + }, 100); + // #endif + }, focuss() { // #ifdef APP let that = this; @@ -133,9 +283,11 @@ // #endif }, resst() { - this.orderList = [] + this.matList = [] this.barcode = '' this.order = '' + this.orderNo = ''; + this.barcodeFocuss() uni.vibrateShort(); }, removeBarcode() { @@ -161,15 +313,16 @@ }, initAnfme() { - for (var i = 0; i < this.orderList.length; i++) { - this.orderList[i].anfme = 0 + for (var i = 0; i < this.matList.length; i++) { + this.matList[i].enableQty = this.matList[i].anfme + this.matList[i].anfme = 0 } uni.hideLoading(); }, revise(item,index) { - var maxCount = this.orderList[index].maxCount + var maxCount = this.matList[index].maxCount if (maxCount == undefined ) { - this.orderList[index]["maxCount"] = item.enableQty + this.matList[index]["maxCount"] = item.enableQty } this.enableQty = item.enableQty this.count = this.minCount @@ -177,15 +330,33 @@ this.rowNum = index this.eject() }, + changeMax() { + this.count = this.enableQty + }, changeValue() { }, - remove(item,index) { - this.orderList.splice(index,1) + remove() { + console.log(this.matList.filter(item=> item.checked !== true)) + this.matList = this.matList.filter(item=> item.checked !== true) + + // this.matList.splice(i,1) + + // for (var i = 0; i < this.matList.length; i++) { + // if (this.matList[i].checked == true) { + + // } + // } + this.checkList(); uni.vibrateShort(); }, + // 鍒楄〃涓垹闄� + // remove(item,index) { + // this.matList.splice(index,1) + // uni.vibrateShort(); + // }, confirm() { - this.orderList[this.rowNum].anfme = this.count + this.matList[this.rowNum].anfme = this.count this.$refs.revise.close() }, comb() { @@ -199,27 +370,28 @@ uni.showToast({title: '鎵樼洏鐮佸繀椤讳负8浣�', icon: "none", position: 'top'}); return; } - if (that.orderList.length === 0) { + if (that.matList.length === 0) { uni.showToast({title: '璇锋坊鍔犲晢鍝佸垪琛�', icon: "none", position: 'top'}); return; } - for (var i = 0; i < that.orderList.length; i++) { - if (that.orderList[i].anfme === 0) { + for (var i = 0; i < that.matList.length; i++) { + if (that.matList[i].anfme === 0) { uni.showToast({title: '鍟嗗搧缁勬墭鏁伴噺涓�0涓嶈兘缁勬墭', icon: "none", position: 'top'}); return; } } uni.showLoading(); uni.request({ - url: that.baseHttp + that.baseIP + ':' +that.basePORT + that.baseUrl + '/mobile/comb/auth', + url: that.commonUrl + '/mobile/comb/auth', data: JSON.stringify({ + billNo: that.orderNo, orderNo: that.orderNo, barcode: that.barcode, - combMats: that.orderList + combMats: that.matList }), method: 'POST', header: { - 'token':uni.getStorageSync('token') + 'token':uni.getStorageSync('token'), }, success(result) { uni.showLoading(); @@ -227,13 +399,10 @@ if (res.code === 200) { uni.showToast({ title: res.msg, - position: 'bottom', + position: 'top', duration: 1000 }); - that.barcode = '' - that.orderNo = '' - that.order = '' - that.orderList = [] + that.resst() } else if (res.code == 403) { uni.showToast({title: res.msg, icon: "none", position: 'top'}) setTimeout(() => { @@ -250,7 +419,7 @@ findOrder() { let that = this uni.request({ - url: that.baseHttp + that.baseIP + ':' +that.basePORT + that.baseUrl + '/mobile/order/search/orderNo/auth', + url: that.commonUrl + '/mobile/order/search/orderNo/auth', data: { orderNo: that.order }, @@ -259,13 +428,14 @@ }, success(result) { let res = result.data + console.log(res.data[0]) if (res.code === 200) { if(res.data) { uni.showLoading(); - that.orderList = res.data; + that.matList = res.data[0].combMats; that.orderNo = that.order that.initAnfme() - console.log(that.orderList) + console.log(that.matList) } } else if (res.code == 403) { uni.showToast({title: res.msg, icon: "none", position: 'top'}) @@ -288,6 +458,78 @@ // open 鏂规硶浼犲叆鍙傛暟 绛夊悓鍦� uni-popup 缁勪欢涓婄粦瀹� type灞炴�� this.$refs.goodsSearch.open(type) }, + // 鍒楄〃閫夋嫨 + checkbox: function (e) { + var items = this.matList, + values = e.detail.value; + for (var i = 0, lenI = items.length; i < lenI; ++i) { + const item = items[i] + item.id = item.id + '' + if(values.indexOf(item.id) >= 0){ + this.$set(item,'checked',true) + }else{ + this.$set(item,'checked',false) + } + } + if (values.length == items.length) { + this.check = true + this.checkText = "鍙栨秷鍏ㄩ��" + } else { + this.check = false + this.checkText = "鍏ㄩ��" + } + uni.vibrateShort(); + }, + // 鍒楄〃鍙嶉�� + reChecked() { + if (this.matList.length == 0) { + return; + } + var checkArr = [] + for (var i = 0; i < this.matList.length;i++) { + if (this.matList[i].checked == true) { + this.$set(this.matList[i],'checked',false) + }else{ + this.$set(this.matList[i],'checked',true) + } + if (this.matList[i].checked == true) { + checkArr.push(this.matList[i].checked) + } + } + if (checkArr.length == this.matList.length) { + this.check = true + this.checkText = "鍙栨秷鍏ㄩ��" + } else { + this.check = false + this.checkText = "鍏ㄩ��" + } + uni.vibrateShort(); + }, + // 鍒楄〃鍏ㄩ�� + allChecked(e){ + if (this.check == true) { + for (var i = 0; i < this.matList.length;i++) { + this.$set(this.matList[i],'checked',false) + } + this.check = false + this.checkText = "鍏ㄩ��" + } else { + for (var i = 0; i < this.matList.length;i++) { + this.$set(this.matList[i],'checked',true) + } + this.check = true + this.checkText = "鍙栨秷鍏ㄩ��" + } + uni.vibrateShort(); + }, + // 妫�楠屽垪琛ㄩ暱搴� 绛変簬0 鏄剧ず鍏ㄩ�� + checkList() { + if (this.matList.length == 0) { + this.check = false + this.checkText = "鍏ㄩ��" + return; + } + } } } </script> @@ -295,7 +537,19 @@ <style> /* @import "../../colorui/main.css"; @import "../../colorui/icon.css"; */ - + .square-1 .lable { + display: inline-block; + float: right; + height: 100%; + width: 400rpx; + } + .square-1 .lable label { + display: inline-block; + float: left; + height: 100%; + width: 90rpx; + line-height: 100rpx; + } .pak-seach-box { background-color: #FFFFFF; margin: 15rpx 15rpx 0rpx 15rpx; @@ -397,21 +651,32 @@ width: 100rpx; height: 180rpx; line-height: 180rpx; - } */ + } */ + .left-check-box { + display: inline-block; + /* background-color: #1E9FFF; */ + float: left; + height: 100%; + width: 100rpx; + text-align: center; + line-height: 170rpx; + } .data-list-left { + /* background-color: #ffff7f; */ display: inline-block; float: left; - margin-left: 6%; height: 180rpx; + width: 500rpx; color: #676767; } .matnr { padding-top: 10rpx; } .data-list-right { + /* background-color: #55ffff; */ display: inline-block; float: right; - width: 200rpx; + width: 100rpx; height: 180rpx; line-height: 180rpx; } @@ -452,6 +717,10 @@ } .changeBox .num-box { display: inline-block; + float: left; + } + .changeBox button { + float: left; } .revise-box-buttom { position: absolute; @@ -462,5 +731,12 @@ bottom: 0; text-align: center; } + + + + + + + </style> -- Gitblit v1.9.1