From 8852ab9972da035e8afdba2d1a003983c35619e5 Mon Sep 17 00:00:00 2001 From: whycq <10027870+whycq@user.noreply.gitee.com> Date: 星期二, 07 二月 2023 08:19:38 +0800 Subject: [PATCH] # --- pages/basics/pakin.vue | 719 +++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 590 insertions(+), 129 deletions(-) diff --git a/pages/basics/pakin.vue b/pages/basics/pakin.vue index 386c623..b4cd123 100644 --- a/pages/basics/pakin.vue +++ b/pages/basics/pakin.vue @@ -1,101 +1,411 @@ <template> <view> - <scroll-view scroll-y> - <view class="pak-seach-box"> - <view class="box-top"> - <view class="color-block-blue"></view> - <text class="title">鎵樼洏鏉$爜</text> + <scroll-view scroll-y catch:touchmove="touchmove"> + <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> - <view class="box-buttom"> - <input type="text" placeholder="鎵爜 / 杈撳叆"> + <view class="square-content"> + <view class="content-input"> + <input v-model="barcode" type="text" placeholder="鎵爜 / 杈撳叆" :focus="barcodeFocus" + @confirm="barcodeInput()" placeholder-style="line-height: 85rpx;"> + <uni-icons type="closeempty" size="20" color="#dadada" @click="removeBarcode()"></uni-icons> + </view> </view> </view> - <view class="pak-seach-box"> - <view class="box-top"> - <view class="color-block-blue"></view> - <text class="title">妫�绱㈠晢鍝�</text> + + + <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> - <view class="box-buttom"> - <input type="text" placeholder="鎵爜 / 杈撳叆"> - <button class="cu-btn bg-blue">+鎻愬彇</button> + <view class="square-content"> + <view class="content-input-btn"> + <input v-model="matnr" type="text" placeholder="鎵爜 / 杈撳叆" @input="findMat()" :focus="focus" + placeholder-style="line-height: 85rpx;"> + <uni-icons type="closeempty" size="20" color="#dadada" @click="removeMatnr()"></uni-icons> + </view> + <view class="content-btn"> + <button class="cu-btn bg-blue pda-btn" @click="selectMat()">+鎻愬彇</button> + </view> </view> </view> - <view class="pak-seach-box"> - <view class="box-top"> - <view class="color-block-blue"></view> - <text class="title">鍟嗗搧鍒楄〃</text> + + + <view class="square-1"> + <view class="square-title"> + <view class="title-sign"> + <view class="sign"></view> + </view> + <view class="title-text"><text>鍟嗗搧鍒楄〃</text></view> + <!-- <label v-show="matList.length != 0" style="float: right;margin-right: 20px;margin-top: 13px;"><uni-icons type="trash" size="25" color="#a5a5a5" @click="remove()"></uni-icons></label> --> </view> </view> - <view class="pak-data-box"> - + + <view class="square-none" v-show="matList.length === 0"> + <view class="v-show">鏆傛棤鏇村鏁版嵁...</view> </view> + + <checkbox-group @change="checkbox"> + <view v-for="(item,index) in matList" :key="index" class="data-list bg-false" + :class="'bg-'+item.checked"> + <view class="data-list-left"> + <!-- <view> + <checkbox :value="item.id+''" :checked="item.checked" style="display: block;" /> + </view> --> + <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> + <text style="width: 400rpx;">鏁伴噺锛歿{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> + </view> + </view> + </checkbox-group> </scroll-view> + + + <!-- 搴曢儴鎸夐挳 --> <view class="footer flex justify-around"> - <view> - <button class="cu-btn">閲嶇疆</button> - </view> - <view> - <button class="cu-btn pakin-btn bg-blue">缁勬墭</button> - </view> - <view> - <button class="cu-btn bg-blue" @click="eject()"><text class="button-text">灞呬腑</text></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="comb1()">缁勬墭</button> + </label> </view> - <!-- 寮瑰嚭灞� --> - <view> - <!-- 鍟嗗搧妫�绱㈠脊绐� --> - <view class="shade" :class="'shade-' + display"> - <view class="goodsSearch"> - <view class="head"> - <view class="color-block-blue"></view> - <view class="head-title">鎻愬彇鍟嗗搧</view> - <view class="head-icon"> - <uni-icons type="closeempty" size="25" @click="eject()"></uni-icons> - </view> + + <!-- 寮圭獥 --> + <!-- 淇敼鏁伴噺 --> + <uni-popup ref="revise" background-color="#fff"> + <view class="revise-box "> + <view class="revise-box-top"> + <view class="color-block-blue"></view> + <text class="title">淇敼鎵瑰彿/鏁伴噺</text> + </view> + <view class="" style="position: relative;left: 50px;margin-bottom: 20px;"> + <text style="display: inline-block;float: left;width: 60px;">鍚堝悓鍙凤細</text> + <input type="text" style="width: 100px;border-bottom: 1px solid #9e9e9e;" v-model="batch"> + </view> + <view class="changeBox"> + <view class="num-box"> + <text style="display: inline-block;float: left;width: 60px;">鏁伴噺锛�</text> + <uni-number-box :value="count" :max="9999" color="#747474" @change="changeValue" /> </view> - <view class="container"> - <view> - <text>鍟嗗搧缂栫爜</text> - </view> - <view> - <text>鍟嗗搧鍚嶇О</text> - </view> - <view> - <text>瑙勬牸</text> - </view> - <view> - <text>鎵瑰彿</text> - </view> - <view> - 鏁伴噺 - </view> - <view class="foot flex justify-center"> - <label for=""> - <button class="cu-btn bg-blue">鎻愬彇</button> - </label> - </view> + </view> + <view class="revise-box-buttom"> + <view> + <button class="cu-btn bg-blue" @click="confirm()">纭</button> </view> </view> </view> - - </view> + </uni-popup> + <uni-popup ref="alertDialog" type="dialog"> + <uni-popup-dialog :type="msgType" cancelText="鍙栨秷" confirmText="纭" title="缁勬墭" content="纭鏄惁鐜板湪缁勬墭!" + @confirm="comb" @close="dialogClose"></uni-popup-dialog> + </uni-popup> </view> </template> <script> + import permision from "@/common/permission.js" export default { data() { return { + commonUrl: null, + barcode: '', + barcodeFocus: true, + focus: false, type: 'center', - display: 'show' + searchBox: 'hide', + pick: 'hide', + matnr: '', + matList: [], + result: '', + enableQty: '', + count: '', + minCount: 0, + maxCount: '', + rowNum: '', + check: false, + checkText: '鍏ㄩ��', + checkedData: [], + batch: '' } }, + onShow() { + setTimeout(() => { + // this.focuss() + }, 100); + + }, + mounted() { + const UIP = uni.getStorageSync('UIP'); + this.baseIP = UIP; + const UPORT = uni.getStorageSync('UPORT'); + this.basePORT = UPORT + const PROJ = uni.getStorageSync('UPROJ'); + this.baseUrl = PROJ + this.getUrl() + }, methods: { - eject() { - if (this.display == 'show') { - this.display = 'hide' - } else { - this.display = 'show' + // 鑾峰彇url + getUrl() { + this.commonUrl = this.baseHttp + this.baseIP + ':' + this.basePORT + "/" + this.baseUrl + }, + // barcode input 浜嬩欢 + barcodeInput() { + // 涓嶈缃畾鏃跺櫒 浼氬嚭鐜版壂鍏ョ殑瀛楃涓蹭笉鍏� + setTimeout(() => { + var len = this.barcode.length + if (len != 8) { + uni.showToast({ + title: '鎵樼洏鐮佹湁璇閲嶈瘯', + icon: "none", + position: 'top' + }); + this.barcodeFocuss() + return; + } + this.focuss() + }, 200) + }, + comb1() { + this.$refs.alertDialog.open() + }, + // 鎵樼洏鐮佹湁璇噸缃� + barcodeFocuss() { + let that = this; + that.barcodeFocus = false; + setTimeout(() => { + that.barcode = ''; + that.barcodeFocus = true; + }, 100); + }, + // 鍟嗗搧鍏夋爣娓呯┖閲嶇疆 + focuss() { + // #ifdef APP + let that = this; + that.focus = false; + setTimeout(() => { + that.matnr = ''; + that.focus = true; + }, 100); + // #endif + }, + resst() { + this.matList = [] + this.barcode = '' + this.barcodeFocuss() + uni.vibrateShort(); + }, + removeBarcode() { + this.barcode = '' + uni.vibrateShort(); + this.barcodeFocus = false; + this.$nextTick(function() { + this.barcodeFocus = true; + }); + }, + removeMatnr() { + this.matnr = '' + uni.vibrateShort(); + this.focus = false; + this.$nextTick(function() { + this.focus = true; + }); + }, + // 鍒楄〃鍒犻櫎鎸夐挳 + remove(item, index) { + this.matList.splice(index, 1) + uni.vibrateShort(); + }, + comb() { + uni.vibrateShort(); + let that = this; + if (that.barcode === '') { + uni.showToast({ + title: '璇锋壂鎻忔墭鐩樻潯鐮�', + icon: "none", + position: 'top' + }); + return; + } + if (that.matList.length === 0) { + uni.showToast({ + title: '璇锋坊鍔犲晢鍝佸垪琛�', + icon: "none", + position: 'top' + }); + return; + } + for (var i = 0; i < that.matList.length; i++) { + if (that.matList[i].anfme == 0 || that.matList[i].anfme == '') { + uni.showToast({ + title: that.matList[i].matnr + '缁勬墭鏁伴噺涓嶈兘涓�0', + icon: "none", + position: 'top' + }); + return; + } + } + uni.showLoading(); + uni.request({ + url: that.commonUrl + '/mobile/comb/auth', + data: JSON.stringify({ + barcode: that.barcode, + combMats: that.matList + }), + method: 'POST', + header: { + 'token': uni.getStorageSync('token') + }, + success(result) { + uni.hideLoading(); + var res = result.data + if (res.code === 200) { + that.resst(); + uni.showToast({ + title: res.msg, + position: 'bottom', + duration: 1000 + }); + } 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' + }) + } + } + }); + }, + selectMat() { + let that = this + uni.vibrateShort(); + uni.navigateTo({ + url: "matSelect", + events: { + // 涓烘寚瀹氫簨浠舵坊鍔犱竴涓洃鍚櫒锛岃幏鍙栬鎵撳紑椤甸潰浼犻�佸埌褰撳墠椤甸潰鐨勬暟鎹� 鍙﹀涓�涓〉闈紶杩囨潵鐨� + acceptDataFromOpenedPage: function(data) { + that.matnr = data.data + that.findMat(that.matnr) + }, + }, + success: function(res) { + // 閫氳繃eventChannel鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹� 鍚戝彟澶栦竴涓〉闈紶閫掑�肩殑 + res.eventChannel.emit('commonUrl', { + commonUrl: that.commonUrl + }) + }, + + }); + that.matnr = '' + }, + findMat() { + let that = this + uni.request({ + url: that.commonUrl + '/mat/auth', + data: { + matnr: that.matnr + }, + header: { + 'token': uni.getStorageSync('token') + }, + success(result) { + uni.vibrateShort(); + let res = result.data + if (res.code === 200 && res.data) { + that.matData = res.data + that.matnr = '' + uni.navigateTo({ + url: "matQuery", + events: { + // 涓烘寚瀹氫簨浠舵坊鍔犱竴涓洃鍚櫒锛岃幏鍙栬鎵撳紑椤甸潰浼犻�佸埌褰撳墠椤甸潰鐨勬暟鎹� + matList: function(data) { + that.checkMat(data.data) + // that.matList.push(data.data) + }, + }, + success: function(res) { + // 閫氳繃eventChannel鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹� + res.eventChannel.emit('matData', { + data: that.matData + }) + }, + }); + } 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' + }) + } + + } + }); + + }, + + // 娣诲姞鍟嗗搧 + addMat(mat) { + this.matList.unshift(mat) + }, + checkMat(mat) { + var len = this.matList.length + var add = true + for (var i = 0; i < len; i++) { + if (mat.matnr == this.matList[i].matnr) { + this.matList[i].anfme += mat.anfme + this.$forceUpdate() // 寮哄埗鍒锋柊 + add = false + } + } + if (add) { + this.matList.unshift(mat) } }, change(e) { @@ -106,11 +416,129 @@ // 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(); + }, + revise(item, index) { + this.count = this.matList[index].anfme + // var maxCount = this.matList[index].maxCount + // if (maxCount == undefined ) { + // this.matList[index]["maxCount"] = item.enableQty + // } + // this.enableQty = item.enableQty + // this.count = this.minCount + // this.maxCount = item.maxCount + this.rowNum = index + this.eject() + }, + eject(type) { + this.type = type + // open 鏂规硶浼犲叆鍙傛暟 绛夊悓鍦� uni-popup 缁勪欢涓婄粦瀹� type灞炴�� + this.$refs.revise.open(type) + }, + changeValue(value) { + this.count = value + }, + confirm() { + this.matList[this.rowNum].anfme = this.count + this.matList[this.rowNum].batch = this.batch + this.$refs.revise.close() + this.$forceUpdate() // 寮哄埗鍒锋柊 + }, + // 鍒楄〃鍙嶉�� + 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(); + }, } } </script> <style> + /* @import "../../colorui/main.css"; + @import "../../colorui/icon.css"; */ + .revise-box { + position: relative; + width: 500rpx; + height: 400rpx; + border-radius: 25px; + } + + .revise-box-top { + width: 400rpx; + height: 120rpx; + border-radius: 25px; + } + + .changeBox { + width: 400rpx; + height: 100rpx; + } + + .num-box { + margin-left: 100rpx; + } + + .revise-box-buttom { + margin-left: 190rpx; + } + .pak-seach-box { background-color: #FFFFFF; margin: 15rpx 15rpx 0rpx 15rpx; @@ -118,11 +546,13 @@ height: 150rpx; border-radius: 20rpx; } - .box-top{ + + .box-top { display: block; height: 60rpx; width: 720rpx; } + .color-block-blue { background-color: #1E9FFF; display: inline-block; @@ -133,6 +563,7 @@ border: 5rpx solid #1E9FFF; border-radius: 20rpx; } + .title { display: inline-block; float: left; @@ -142,12 +573,31 @@ line-height: 50rpx; margin-top: 10rpx; } + .box-buttom { - display: block; - width: 720rpx; - height: 80rpx; + display: inline-block; + background-color: #ededed; + width: 65%; + height: 60rpx; + border-radius: 20rpx; + margin: 15rpx 15rpx 0rpx 15rpx; } - .pak-seach-box input { + + .box-buttom input { + width: 75%; + float: left; + margin: 8rpx 10rpx 0rpx 25rpx; + } + + .box-buttom .search-icon { + width: 60rpx; + height: 60rpx; + float: right; + margin-top: 5rpx; + margin-right: 10rpx; + } + + /* .pak-seach-box input { background-color: #ededed; border: 1rpx solid #d8d8d8; display: inline-block; @@ -158,84 +608,95 @@ line-height: 60rpx; margin: 15rpx 15rpx 0rpx 15rpx; padding-left: 20rpx; - } + } */ .pak-seach-box button { background-color: #1E9FFF; color: #ffffff; display: inline-block; float: right; - width: 150rpx; + width: 180rpx; height: 60rpx; margin: 15rpx 15rpx 0rpx 15rpx; line-height: 60rpx; } + .pakin-btn { background-color: #1E9FFF; } - /* 閬僵灞� */ - .shade-show { - display: block; + + .pak-data-box { + background-color: #F1F1F1; + margin: 15rpx 15rpx 0rpx 15rpx; + width: 96%; + height: 70rpx; + border-radius: 20rpx; } - .shade-hide { - display: none; - } - .shade { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: rgba(0,0,0,0.6); - z-index: 90; - } - .goodsSearch { + + .pak-data-box .box-top { background-color: #FFFFFF; - display: block; - position: fixed; - top: 5%; - left: 20rpx; - width: 720rpx; - height: 90%; - border-radius: 21rpx; - z-index: 100; + height: 70rpx; + border-radius: 20rpx 20rpx 20rpx 20rpx; } - .head { + + .bg-false { background-color: #FFFFFF; - width: 100%; - height: 8%; - border-radius: 20rpx 20rpx 0 0 ; } - .head .color-block-blue { - margin: 36rpx 5rpx 0 30rpx; + + .bg-true { + background-color: #ebebeb; } - .head-title { + + .data-list { + border-bottom: 1px solid #d8d8d8; + height: 180rpx; + margin: 15rpx; + border-radius: 20rpx; + } + + .data-list:first-child { + margin-top: 20rpx; + } + + .data-list:last-child { + margin-bottom: 120rpx; + } + + /* .data-list-left { display: inline-block; float: left; - font-size: 40rpx; - margin-top: 25rpx; - margin-left: 20rpx; + text-align: center; + width: 100rpx; + height: 180rpx; + line-height: 180rpx; + } */ + .data-list-left { + display: inline-block; + float: left; + margin-left: 6%; + height: 180rpx; + color: #676767; } - .head-icon { + + .matnr { + padding-top: 10rpx; + } + + .data-list-right { display: inline-block; float: right; - margin-top: 25rpx; - margin-right: 20rpx; + height: 180rpx; + line-height: 180rpx; } - .container { - width: 100%; - height: 92%; - background-color: #F1F1F1; - border-radius: 0 0 20rpx 20rpx; - } - .foot { - width: 95.7%; - height: 100rpx; - line-height: 100rpx; - background-color: #FFF; - position: fixed; - bottom: 5%; - border-top: 1px solid #d8d8d8; - border-radius: 0 0 20rpx 20rpx ; - z-index: 1; + + /* display: inline-block; + float: right; + width: 200rpx; + height: 180rpx; + line-height: 180rpx; */ + .data-list-right label { + display: inline-block; + float: left; + width: 80rpx; + height: 180rpx; } </style> -- Gitblit v1.9.1