From 82f3ac1948d1b9d3d0e3dcbcd9466eabc72cdcf8 Mon Sep 17 00:00:00 2001 From: whycq <10027870+whycq@user.noreply.gitee.com> Date: 星期三, 04 九月 2024 15:16:47 +0800 Subject: [PATCH] # --- pages/phyz/comOrder/orderCar.vue | 271 ++++++++++ pages/phyz/comOrder/orderIn.vue | 508 +++++++++++++++++++ pages/phyz/orderOut/orderOutSelect.vue | 8 pages/phyz/comOrder/orderOut.vue | 410 +++++++++++++++ pages/home/orderManage.vue | 14 pages/phyz/comOrder/checkOut.vue | 287 +++++++++++ pages.json | 28 + 7 files changed, 1,522 insertions(+), 4 deletions(-) diff --git a/pages.json b/pages.json index 98bf99d..32b9941 100644 --- a/pages.json +++ b/pages.json @@ -448,6 +448,34 @@ { "navigationBarTitleText" : "搴撳瓨鏄庣粏" } + }, + { + "path" : "pages/phyz/comOrder/orderIn", + "style" : + { + "navigationBarTitleText" : "鍏ュ簱鍗�" + } + }, + { + "path" : "pages/phyz/comOrder/orderOut", + "style" : + { + "navigationBarTitleText" : "璁㈠崟鍑哄簱" + } + }, + { + "path" : "pages/phyz/comOrder/orderCar", + "style" : + { + "navigationBarTitleText" : "寰呯粍鎵樺垪琛�" + } + }, + { + "path" : "pages/phyz/comOrder/checkOut", + "style" : + { + "navigationBarTitleText" : "鍑哄簱纭" + } } ], "globalStyle": { diff --git a/pages/home/orderManage.vue b/pages/home/orderManage.vue index 59f8007..01069e6 100644 --- a/pages/home/orderManage.vue +++ b/pages/home/orderManage.vue @@ -100,6 +100,20 @@ // cuIcon: 'pullup', url: `/phyz/backStock/backStocksOrder` }, + { + title: '鍏ュ簱鍗�', + name: 'orderIn', + color: 'blue', + // cuIcon: 'pullup', + url: `/phyz/comOrder/orderIn` + }, + { + title: '鍑哄簱鍗�', + name: 'orderOut', + color: 'blue', + // cuIcon: 'pullup', + url: `/phyz/comOrder/orderOut` + }, ], colorList: ['cyan','blue','purple','mauve','pink','brown','red','orange','yellow','olive','olive','grey' ] diff --git a/pages/phyz/comOrder/checkOut.vue b/pages/phyz/comOrder/checkOut.vue new file mode 100644 index 0000000..87d356f --- /dev/null +++ b/pages/phyz/comOrder/checkOut.vue @@ -0,0 +1,287 @@ +<template> + <view> + <view class="list shop-car" v-for="item in dataList"> + <view class="list-left"> + <view class="detl-threeCode" style="padding: 16rpx 0;">{{item.csocode}}</view> + <view>搴撲綅锛歿{item.locNo}}</view> + <view>缂栧彿锛歿{item.matnr}}</view> + <view>鍚嶇О锛歿{item.maktx}}</view> + <view>鑷敱椤癸細{{item.containerCode}}</view> + <view>瑙勬牸锛歿{item.specs}}</view> + <view>鎵瑰彿锛歿{item.batch}}</view> + <view>搴撳瓨鏁伴噺锛歿{item.count}}</view> + <view class="detl-threeCode" style="display: flex;padding: 32rpx 0;align-items: center;font-size: 24px;"> + <view>鍑哄簱鏁伴噺锛歿{item.anfme}}</view> + <view style="margin-left: 50rpx;" @click="revise(item)"> + <uni-icons type="compose" size="30" color="#fff"></uni-icons> + </view> + </view> + + <view class="detl-threeCode" style="display: flex;padding: 0 0 32rpx 0;font-size: 24px;">鍑哄簱绔欙細 + <view class="dropdown" @click="toggleDropdown(item)"> + <!-- <view style="height: 100%;width: 100%; position: fixed;background-color: rgba(0,0,0,.4);left:0;top:0" v-if = "item.isOpen"></view> --> + <input type="text" style="width: 270rpx;font-size: 20px;" v-model="item.agvStaNo" placeholder="璇烽�夋嫨鍑哄簱绔�" placeholder-style="color: #fff"> + <uni-icons :type="item.isOpen ? 'top' : 'bottom'" color="#fff" style="margin-left: 10rpx;"></uni-icons> + <scroll-view scroll-y="ture" class="dropdown-content" v-if="item.isOpen"> + <view class="dropdown-item" v-for="option in options" @click="selected(option,item)">{{option}}</view> + </scroll-view> + </view> + </view> + <button @click="combConfirm(item)" :disabled="combDis">绔嬪嵆鍑哄簱</button> + </view> + </view> + <!-- 寮圭獥 --> + <view> + <uni-popup ref="addItem" type="dialog"> + <view class="popup"> + <!-- 鏍囬 --> + <view class="title">鍑哄簱鏁伴噺</view> + <view class="popup-item"> + <view> + <uni-number-box :value="data.anfme" :step='1' :min="0" :max="maxCount" color="#747474" @change="changeValue" /> + </view> + + </view> + <view class="popup-item"> + <view> + <view @click="max()" style="padding: 0rpx 16rpx;background-color: #d9d9d9;font-size: 10px;">MAX</view> + </view> + + </view> + <view class="btn"> + <view class="btn-left" @click="addClose">鍙栨秷</view> + <view class="btn-right" @click="addConfirm()">纭</view> + </view> + </view> + </uni-popup> + </view> + <view style="height: 100rpx;"></view> + <!-- 搴曢儴鎿嶄綔鎸夐挳 --> + <!-- <view class="buttom"> + <button size="mini" @click="reset('warn')">绋嶅悗澶勭悊</button> + <button size="mini" type="primary" @click="combConfirm('warn')" :disabled="combDis">绔嬪嵆鍑哄簱</button> + </view> --> + </view> +</template> + +<script> + export default { + data() { + return { + baseUrl: '', + token: '', + data: {}, + dataList: [], + option: '', + options: [], + combDis: false, + maxCount: 0, + orderType: '' + } + }, + onShow() { + let _this = this + this.baseUrl = uni.getStorageSync('baseUrl'); + this.token = uni.getStorageSync('token'); + // const eventChannel = this.$scope.eventChannel; // 鍏煎APP-NVUE + const eventChannel = this.getOpenerEventChannel(); + // 鐩戝惉acceptDataFromOpenerPage浜嬩欢锛岃幏鍙栦笂涓�椤甸潰閫氳繃eventChannel浼犻�佸埌褰撳墠椤甸潰鐨勬暟鎹� + // eventChannel.on('mat', function(data) { + // let ids = [data.mat.id] + // _this.getPakoutList(ids,data.mat.locNo) + // }) + eventChannel.on('item', function(data) { + let ids = [data.item.id] + _this.getPakoutList(ids) + }) + eventChannel.on('type', function(data) { + console.log(data); + if (data) { + _this.orderType = data.type + } + }) + }, + methods: { + max() { + this.data.anfme = this.data.count + }, + toggleDropdown(item) { + this.options = [] + item.isOpen = !item.isOpen; + for (let k of item.agvStaNos) { + this.options.push(k) + } + }, + selected(option,item) { + item.agvStaNo = option + }, + // 璁㈠崟鏄庣粏 + getPakoutList(ids,locNo) { + let _this = this + uni.request({ + url: `${_this.baseUrl}/out/pakout/preview/auth`, + header: {'token': uni.getStorageSync('token')}, + data: ids, + method: 'POST', + success(res) { + res = res.data + if (res.code === 200) { + for (let k of res.data) { + if (k.locNo != null) { + k['isOpen'] = false + k['count'] = k.anfme + k.anfme = 0 + if (_this.orderType == 'bcp') { + if (k.locNo.substring(k.locNo.length - 1, k.locNo.length) == 1) { + continue + } + } + _this.dataList.push(k) + } + } + } else if (res.code == 403) { + uni.showToast({ title: res.msg, icon: "error", position: 'top' }) + setTimeout(() => { uni.reLaunch({ url: '../../login/login' }); }, 1000); + } else { + uni.showToast({ title: res.msg, icon: "error", position: 'top' }) + } + } + }) + }, + revise(item) { + this.data = item + this.maxCount = item.count + this.$refs.addItem.open() + }, + addClose() { + this.$refs.addItem.close() + this.data.anfme = 0 + }, + addConfirm() { + this.$refs.addItem.close() + }, + changeValue(value) { + this.data.anfme = value + }, + combConfirm(item) { + let _this = this + _this.combDis = true + if (_this.data.anfme == 0) { + uni.showToast({ title: '鍑哄簱鏁伴噺涓嶈兘涓�0锛�', icon: "error", position: 'top'}) + return + } + uni.showLoading({}) + let combList = [] + combList.push(item) + uni.request({ + url: `${_this.baseUrl}/out/pakout/auth`, + header: {'token': uni.getStorageSync('token')}, + data: combList, + method: 'POST', + success(res) { + _this.combDis = false + res = res.data + if (res.code === 200) { + uni.hideLoading({}) + uni.showToast({ title: '鍑哄簱鎴愬姛', icon: "success", position: 'top'}) + setTimeout(()=> { + uni.navigateBack({ + delta: 2 + }); + },700) + } else if (res.code == 403) { + uni.showToast({ title: res.msg, icon: "error", position: 'top' }) + setTimeout(() => { uni.reLaunch({ url: '../../login/login' }); }, 1000); + } else { + uni.showToast({ title: res.msg, icon: "error", position: 'top' }) + } + }, + fail(res) { + _this.combDis = false + } + }) + } + } + } +</script> + +<style scoped> + @import url('../../../static/css/common/order.css'); + .shop-car { + background-color: #2299ff; + color: #fff; + } + .detl-threeCode { + font-size: 34px; + font-weight: bold; + } + .dropdown-item { + font-size: 20px; + font-weight: bold; + } + + .popup { + width: 80vw; + min-height: 100rpx; + background-color: #FFF; + border-radius: 25rpx; + position: relative; + } + .title { + height: 100rpx; + line-height: 100rpx; + width: 100%; + color: #606266; + text-align: center; + font-size: 16px; + } + .popup-item { + height: 80rpx; + line-height: 80rpx; + display: flex; + align-items: center; + justify-content: center; + } + .popup-item-left { + width: 16vw; + padding-right: 20rpx; + text-align: right; + color: #606266; + } + .popup-item-right { + display: flex; + align-items: center; + width: 50vw; + height: 50rpx; + padding: 2px 5px; + border: 1px solid #E4E7ED; + border-radius: 5rpx; + } + .popup-item-right input{ + color: #606266; + } + .btn { + display: flex; + height: 90rpx; + margin-top: 20rpx; + border-top: 1px solid #DCDFE6; + justify-content: center; + align-items: center; + } + .btn-left { + display: flex; + flex: 1; + height: 100%; + justify-content: center; + align-items: center; + color: #606266; + border-right: 1px solid #DCDFE6; + } + .btn-right { + display: flex; + flex: 1; + justify-content: center; + align-items: center; + color: #409EFF; + } +</style> diff --git a/pages/phyz/comOrder/orderCar.vue b/pages/phyz/comOrder/orderCar.vue new file mode 100644 index 0000000..3c97b09 --- /dev/null +++ b/pages/phyz/comOrder/orderCar.vue @@ -0,0 +1,271 @@ +<template> + <view> + <view class="list list-font-color shop-car" :class="orderDetl.color" v-for="(orderDetl,index) in orderCarList" :key="index"> + <view class="list-left"> + <view class="detl-threeCode">{{orderDetl.threeCode}}</view> + <view>涓诲崟鍙凤細{{orderDetl.orderNo}}</view> + <view>缂栧彿锛歿{orderDetl.matnr}}</view> + <view>鍚嶇О锛歿{orderDetl.maktx}}</view> + <view>鎬绘暟閲忥細{{orderDetl.anfme}}</view> + <view>鍏ュ簱鏁伴噺锛歿{orderDetl.pakinQty}}</view> + </view> + <view class="list-right" @click="chageDetl(index)"> + <uni-icons type="settings" size="25" color="#fff"></uni-icons> + </view> + </view> + <!-- 鍨珮 --> + <view style="height: 120rpx;"></view> + <!-- 搴曢儴鎿嶄綔鎸夐挳 --> + <view class="buttom"> + <button size="mini" type="primary" @click="agvStart('warn')">鍚姩鍏ュ簱</button> + </view> + <!-- 寮圭獥 --> + <view> + <uni-popup ref="chageDetl" type="dialog"> + <view class="popup"> + <!-- 鏍囬 --> + <view class="title">鍏ュ簱鏁伴噺</view> + <view class="popup-item"> + <uni-number-box :value="count" :step='1' :max="9999999" color="#747474" @change="changeValue" /> + </view> + <view class="btn"> + <view class="btn-left" @click="remove()">绉婚櫎鐗╂枡</view> + <view class="btn-right" @click="changeCount()">淇敼鏁伴噺</view> + </view> + </view> + </uni-popup> + </view> + <!-- 寮圭獥 --> + <view> + <uni-popup ref="agvStart" type="dialog"> + <view class="popup"> + <!-- 鏍囬 --> + <view class="title">鍚姩鍏ュ簱</view> + <view class="popup-item"> + <view class="popup-item-left">璐ф灦鐮�:</view> + <view class="popup-item-right"><input type="text" v-model="barcode"></view> + </view> + <view class="popup-item"> + <view class="popup-item-left">绔欑偣鐮�:</view> + <view class="popup-item-right"><input type="text" v-model="agvDevp"></view> + </view> + <view class="btn"> + <button class="btn-left" @click="agvStartClose()">鍙栨秷</button> + <button class="btn-right" @click="agvStartConfirm()" :disabled="agvStartDis">鍏ュ簱</button> + </view> + </view> + </uni-popup> + </view> + </view> +</template> + +<script> + // todo: 璐墿杞︿紭鍖�,瀛樺偍璐墿杞﹀唴瀹�,閫�鍑洪〉闈㈠啀杩涘悗璐墿杞﹁繕鍦� + export default { + data() { + return { + orderCarList: [], + count: 0, + index: 0, + barcode: '', + agvDevp: '', + agvStartDis: false + } + }, + onShow() { + let _this = this + this.baseUrl = uni.getStorageSync('baseUrl'); + this.token = uni.getStorageSync('token'); + // const eventChannel = this.$scope.eventChannel; // 鍏煎APP-NVUE + const eventChannel = this.getOpenerEventChannel(); + // 鐩戝惉acceptDataFromOpenerPage浜嬩欢锛岃幏鍙栦笂涓�椤甸潰閫氳繃eventChannel浼犻�佸埌褰撳墠椤甸潰鐨勬暟鎹� + eventChannel.on('item', function(data) { + _this.orderCarList = data.item + console.log(data.item); + }) + }, + methods: { + chageDetl(index) { + this.index = index + this.count = this.orderCarList[index].pakinQty + this.$refs.chageDetl.open() + }, + // 淇敼鏁伴噺 + changeCount() { + if (this.count > this.orderCarList[this.index].anfme) { + uni.showToast({ title: '鏁伴噺涓嶅悎娉曪紒', icon: "none", position: 'top' }) + return + } + this.orderCarList[this.index].pakinQty = this.count + this.$forceUpdate() // 寮哄埗鍒锋柊 + this.$refs.chageDetl.close() + }, + // 绉婚櫎鐗╂枡 + remove() { + this.orderCarList.splice(this.index, 1) + this.$refs.chageDetl.close() + }, + changeValue(value) { + this.count = value + }, + agvStart() { + this.$refs.agvStart.open() + }, + agvStartClose() { + this.barcode = '' + this.agvDevp = '' + this.$refs.agvStart.close() + }, + agvStartConfirm() { + this.barcode = this.barcode.replace(/\s+/g, '') + this.agvDevp = this.agvDevp.replace(/\s+/g, '') + let _this = this + if (_this.barcode === '') { + uni.showToast({ title: '璐ф灦鐮佷负绌猴紒', icon: "error", position: 'top' }) + return; + } + if (_this.agvDevp === '') { + uni.showToast({ title: '绔欑偣鐮佷负绌猴紒', icon: "error", position: 'top' }) + return; + } + if (_this.orderCarList.length === 0) { + uni.showToast({ title: '缁勬墭鍒楄〃涓虹┖锛�', icon: "error", position: 'top' }) + return; + } + for (let k of _this.orderCarList) { + if (k.pakinQty == 0) { + uni.showToast({ title: `${k.matnr}鏁伴噺涓嶈兘涓� 0 锛乣, icon: "error", position: 'top' }) + return; + } + } + let combMat = { orderNo:'', barcode: '', locNo: '', combMats: [] } + let combMats = [] + for (let item of _this.orderCarList) { + combMat.orderNo = item.orderNo + combMat.barcode = _this.barcode + combMat.locNo = _this.agvDevp + combMat.combMats = [] + let combM = {csocode: item.threeCode,isoseq: item.deadTime,matnr: item.matnr,batch: item.batch,anfme: item.pakinQty,maktx: item.maktx,specs: item.specs,processSts: item.processSts} + combMat.combMats.push(combM) + combMats.push({...combMat}) + } + this.comb(combMats) + + }, + comb(combMats) { + let _this = this; + this.agvStartDis = true + uni.request({ + url: _this.baseUrl + '/agvMobile/start/pakin/auth', + data: JSON.stringify({ + barcode: _this.barcode, + containerCode: _this.barcode, + devNo: _this.agvDevp, + combParams: combMats + }), + method: 'POST', + header: { + 'token': uni.getStorageSync('token') + }, + success(result) { + var res = result.data + _this.agvStartDis = false + if (res.code === 200) { + _this.orderCarList = [] + _this.$refs.agvStart.close() + uni.showToast({ title: '鍚姩鎴愬姛锛�', icon: "success", position: 'top' }) + setTimeout(()=> { + _this.getOpenerEventChannel().emit('acceptDataFromOpenedPage', {data: 1}); + uni.navigateBack({}) + },1000) + } else if (res.code == 403) { + uni.showToast({ title: res.msg, icon: "error", position: 'top' }) + setTimeout(() => { uni.reLaunch({ url: '../../login/login' }); }, 1000); + } else { + uni.showToast({ title: res.msg, icon: "error", position: 'top' }) + } + }, + fail(res) { + _this.agvStartDis = false + } + }); + }, + } + } +</script> + +<style> + @import url('../../../static/css/common/order.css'); + .shop-car { + background-color: #2299ff; + color: #fff; + } + .detl-threeCode { + font-size: 28px; + font-weight: bold; + } + .popup { + width: 80vw; + min-height: 100rpx; + background-color: #FFF; + border-radius: 25rpx; + position: relative; + } + .title { + height: 100rpx; + line-height: 100rpx; + width: 100%; + color: #606266; + text-align: center; + font-size: 16px; + } + .popup-item { + height: 80rpx; + line-height: 80rpx; + display: flex; + align-items: center; + justify-content: center; + } + .popup-item-left { + width: 20vw; + padding-right: 20rpx; + text-align: right; + color: #606266; + } + .popup-item-right { + display: flex; + align-items: center; + width: 50vw; + height: 50rpx; + padding: 2px 5px; + border: 1px solid #E4E7ED; + border-radius: 5rpx; + } + .popup-item-right input{ + color: #606266; + } + .btn { + display: flex; + height: 90rpx; + margin-top: 20rpx; + border-top: 1px solid #DCDFE6; + justify-content: center; + align-items: center; + } + .btn-left { + display: flex; + flex: 1; + height: 100%; + justify-content: center; + align-items: center; + color: #e2231a; + border-right: 1px solid #DCDFE6; + } + .btn-right { + display: flex; + flex: 1; + justify-content: center; + align-items: center; + color: #409EFF; + } +</style> diff --git a/pages/phyz/comOrder/orderIn.vue b/pages/phyz/comOrder/orderIn.vue new file mode 100644 index 0000000..0eae420 --- /dev/null +++ b/pages/phyz/comOrder/orderIn.vue @@ -0,0 +1,508 @@ +<template> + <view class="container"> + <view class="code"> + <uni-search-bar :focus="searchValueFocus" v-model="searchValue" + maxlength="500" ancel="cancel" @confirm="searchValueInput2()" @clear="clear" placeholder="杈撳叆 / 鎵弿 璁㈠崟鍙�"> + </uni-search-bar> + <view class="code-title"> + <view></view> + <view style="width: 100%;text-align: center;margin: 16rpx 0;"><text style="color: #0055ff;">{{docType}}</text> 鎬绘暟閲忥細- {{total}} -</view> + <view style="width: 100rpx;margin: 16rpx 0;" @click="filter()">绛涢��</view> + </view> + </view> + + <view class="list list-font-color" :class="orderDetl.color" v-for="(orderDetl,index) in dataList" :key="index"> + <view class="list-left"> + <view class="detl-threeCode">{{orderDetl.threeCode}}</view> + <view>涓诲崟鍙凤細{{orderDetl.orderNo}}</view> + <view>缂栧彿锛歿{orderDetl.matnr}}</view> + <view>鍚嶇О锛歿{orderDetl.maktx}}</view> + <view>绫诲瀷锛歿{orderDetl.brand}}</view> + <view>鎬绘暟閲忥細{{orderDetl.anfme}}</view> + <view>宸插叆鏁伴噺锛歿{orderDetl.qty}}</view> + </view> + <view class="list-right" @click="addItem(index)"> + <uni-icons type="folder-add" size="25" color="#fff"></uni-icons> + </view> + </view> + + + <view class="shop-car" @click="orderCar()"> + <view class="car-left"> + <uni-icons type="cart-filled" size="35" color="#fff"></uni-icons> + </view> + <view class="car-right"> + <text>{{orderCarList.length}}</text> + </view> + </view> + <!-- 鍨珮 --> + <view style="height: 340rpx;text-align: center;color: #b9b9b9;"> + - 宸茬粡鍒板簳浜� - + </view> + <!-- 寮圭獥 --> + <view> + <uni-popup ref="addItem" type="dialog"> + <view class="popup"> + <!-- 鏍囬 --> + <view class="title">鍏ュ簱鏁伴噺</view> + <view class="popup-item"> + <uni-number-box :value="count" :step='1' :max="9999999" color="#747474" @change="changeValue" /> + </view> + <view class="btn"> + <view class="btn-left" @click="addClose">鍙栨秷</view> + <view class="btn-right" @click="addConfirm()">娣诲姞</view> + </view> + </view> + </uni-popup> + </view> + <!-- 绛涢�夊脊绐� --> + <view> + <uni-popup ref="filter" type="dialog"> + <view class="filter-popup"> + <!-- 鏍囬 --> + <view class="title">绛涢��</view> + <hr> + <view class="popup-item" > + <view class="item-cl" > + <view>鍗曟嵁绫诲瀷锛�</view> + <view> + <uni-combox style="height: 30rpx;" :candidates="docTypes" placeholder="绫诲瀷" v-model="docType" @input="getDocType"></uni-combox> + </view> + + </view> + </view> + <view class="popup-item" > + <view class="item-cl"> + <view>閿�鍞鍗曪細</view> + <input type="text" v-model="searchValue"> + </view> + </view> + <view class="popup-item" > + <view class="item-cl"> + <view>涓昏鍗曞彿锛�</view> + <input type="text" v-model="orderNo"> + </view> + </view> + <view class="popup-item" > + <view class="item-cl"> + <view>鍟嗗搧缂栧彿锛�</view> + <input type="text" v-model="matnr"> + </view> + </view> + <view class="popup-item" > + <view class="item-cl"> + <view>鍟嗗搧鍚嶇О锛�</view> + <input type="text" v-model="maktx"> + </view> + </view> + <view class="popup-item" > + <view class="item-cl"> + <view>鍟嗗搧绉嶇被锛�</view> + <input type="text" v-model="brand"> + </view> + </view> + <view class="btn filter-btn"> + <view class="btn-left" @click="filterClose">閲嶇疆</view> + <view class="btn-right" @click="filterConfirm()">纭</view> + </view> + </view> + </uni-popup> + </view> + </view> +</template> + +<script> + export default { + data(){ + return { + baseUrl: '', + token: '', + searchValueFocus: true, + searchValue: '', + orderNo: '', + matnr: '', + maktx: '', + brand: '', + total: '', + dataList: [], + orderCarList: [], + data: { + curr: 1, + limit: 100, + three_code: '', + matnr: '', + maktx: '', + order_no: '', + brand: '', + docType: 0 + }, + index: 0, + count: 0, + mask: false, + docTypes: [], + srDocTypes: [], + docType: '' + + } + }, + // 涓嬫媺鍒锋柊 + onReachBottom() { + this.status = 'more'; + this.getOrderDetlList(this.searchValue,10); + }, + onLoad() { + this.baseUrl = uni.getStorageSync('baseUrl'); + this.token = uni.getStorageSync('token'); + this.searchValue = uni.getStorageSync('orderThreeCode'); + this.getOrderDetlList(this.searchValue,10) + this.getDocTypes() + }, + onShow() { + console.log(uni.getStorageSync('pakinOrderCar')); + }, + onHide() { + uni.setStorageSync('pakinOrderCar', this.orderCarList); + }, + methods: { + getDocTypes() { + let _this = this + uni.request({ + url: `${_this.baseUrl}/doc/type/list`, + header: {'token': uni.getStorageSync('token')}, + method: 'GET', + success(res) { + res = res.data + if (res.code === 200) { + for (let k of res.data) { + _this.docTypes.push(k.docName) + } + _this.srDocTypes = res.data + } + } + }) + }, + getOrderDetlList(threeCode,limit) { + uni.showLoading({}) + console.log(this.srDocTypes); + console.log(this.docType); + let _this = this + for (let k of this.srDocTypes) { + if (k.docName == this.docType) { + _this.data.docType = k.docId + } + } + _this.mask = true + _this.data.three_code = threeCode + _this.data.limit = limit + uni.request({ + url: `${_this.baseUrl}/order/detls/pakin`, + header: {'token': uni.getStorageSync('token')}, + data: _this.data, + method: 'GET', + success(res) { + uni.hideLoading() + res = res.data + if (res.code === 200) { + for (let k of res.data.records) { + if (k.anfme > k.qty && k.qty == 0) { + k['color'] = 'order-sts-start' + } else if (k.anfme > k.qty && k.qty != 0) { + k['color'] = 'order-sts-working' + } else { + k['color'] = 'order-sts-end' + } + } + let list = res.data.records + _this.dataList = _this.dataList.concat(list); + _this.data.curr = _this.data.curr + 1 + // _this.dataList = res.data.records + _this.total = res.data.total + _this.mask = false + } else if (res.code == 403) { + uni.showToast({ title: res.msg, icon: "error", position: 'top' }) + setTimeout(() => { uni.reLaunch({ url: '../../login/login' }); }, 1000); + } else { + uni.showToast({ title: res.msg, icon: "error", position: 'top' }) + } + } + }) + }, + searchValueInput2() { + this.dataList = [] + this.data.curr = 1 + uni.setStorageSync('orderThreeCode', this.searchValue); + if (this.searchValue.length == 0) { + this.getOrderDetlList(this.searchValue,10) + } else { + this.getOrderDetlList(this.searchValue,10) + } + + }, + clear() { + this.dataList = [] + this.data.curr = 1 + setTimeout(()=> { + this.getOrderDetlList(this.searchValue,10) + },300) + }, + // 娣诲姞鍏ュ簱鍟嗗搧鑷� 寰呯粍鎵樺垪琛� + addItem(index) { + // 鍒ゆ柇娣诲姞鐨勫晢鍝佹槸鍚﹀拰宸茬粡娣诲姞鐨勯噸澶� + let dataList = this.dataList + for (let k of this.orderCarList) { + if (k.orderNo == dataList[index].orderNo + && k.threeCode == dataList[index].threeCode + && k.matnr == dataList[index].matnr) { + uni.showToast({ title: '璇峰嬁閲嶅娣诲姞鍟嗗搧锛�', icon: "none", position: 'top' }) + return + } + } + this.index = index + this.$refs.addItem.open() + }, + addClose() { + this.$refs.addItem.close() + this.count = 0 + }, + addConfirm() { + // if (this.count == 0) { + // uni.showToast({ title: '鍏ュ簱鏁伴噺涓嶅悎娉曪紒', icon: "none", position: 'top' }) + // return + // } + this.dataList[this.index]['used'] = true + this.dataList[this.index]['pakinQty'] = this.count + this.orderCarList.push(this.dataList[this.index]) + this.index = 0 + this.count = 0 + this.$refs.addItem.close() + }, + getDocType() { + }, + // 鐐瑰嚮鍓嶅線 寰呯粍鎵樺垪琛� + orderCar() { + let _this = this + if (_this.orderCarList.length === 0) { + uni.showToast({ title: '璇锋坊鍔犲叆搴撳晢鍝侊紒', icon: "none", position: 'top' }) + return + } + uni.navigateTo({ + url: './orderCar', + success(res) { + res.eventChannel.emit('item', { + item: _this.orderCarList + }) + }, + events: { + acceptDataFromOpenedPage: function(data) { + console.log(data); + if (data.data == 1) { + _this.orderCarList = [] + _this.getOrderDetlList(uni.getStorageSync('threeCode'),10) + } + } + } + }) + }, + changeValue(value) { + this.count = value + }, + // 绛涢�� + filter() { + this.$refs.filter.open('bottom') + }, + filterConfirm() { + this.dataList = [] + this.data.curr = 1 + this.data.maktx = this.maktx + this.data.matnr = this.matnr + this.data.order_no = this.order_no + this.data.brand = this.brand + this.getOrderDetlList(this.searchValue,10) + this.$refs.filter.close() + }, + filterClose() { + this.dataList = [] + this.data.curr = 1 + this.data.maktx = '' + this.data.matnr = '' + this.data.order_no = '' + this.data.brand = '' + this.data.docType = 0 + this.docType = '' + this.searchValue = '' + this.maktx = '' + this.matnr = '' + this.orderNo = '' + this.brand = '' + this.getOrderDetlList(this.searchValue,10) + this.$refs.filter.close() + } + + } + } + +</script> + +<style> + @import url('../../../static/css/common/order.css'); + .list-font-color { + color: #fff; + /* background-color: #33bb44; */ + } + .order-sts-start { + background-color: #3eb689; + } + .order-sts-working { + background-color: #ff9d46; + } + .order-sts-end { + background-color: #ff7356; + } + .detl-threeCode { + font-size: 28px; + font-weight: bold; + } + .shop-car { + position: fixed; + left: 22rpx; + bottom: 150rpx; + background-color: #2299ff; + width: 260rpx; + height: 90rpx; + display: flex; + align-items: center; + box-shadow: 0 0 10px 5px rgba(0, 0, 0, .6); + border-radius: 10rpx; + color: #fff; + font-size: 28px; + font-weight: bold; + } + .car-left { + padding: 16rpx; + flex: 5; + } + .car-right { + flex: 4; + } + + .mask { + position: absolute; + width: 100%; + height: 100vh; + z-index: 999; + top: 0; + left: 0; + background-color: rgba(0, 0, 0, .4); + display: flex; + align-items: center; + justify-content: center; + font-size: 16px; + color: #fff; + } + + .popup { + width: 80vw; + min-height: 100rpx; + background-color: #FFF; + border-radius: 25rpx; + position: relative; + } + .title { + height: 100rpx; + line-height: 100rpx; + width: 100%; + color: #606266; + text-align: center; + font-size: 16px; + } + .popup-item { + height: 80rpx; + line-height: 80rpx; + display: flex; + align-items: center; + justify-content: center; + } + .popup-item-left { + width: 16vw; + padding-right: 20rpx; + text-align: right; + color: #606266; + } + .popup-item-right { + display: flex; + align-items: center; + width: 50vw; + height: 50rpx; + padding: 2px 5px; + border: 1px solid #E4E7ED; + border-radius: 5rpx; + } + .popup-item-right input{ + color: #606266; + } + .btn { + display: flex; + height: 90rpx; + margin-top: 20rpx; + border-top: 1px solid #DCDFE6; + justify-content: center; + align-items: center; + } + .btn-left { + display: flex; + flex: 1; + height: 100%; + justify-content: center; + align-items: center; + color: #606266; + border-right: 1px solid #DCDFE6; + } + .btn-right { + display: flex; + flex: 1; + justify-content: center; + align-items: center; + color: #409EFF; + } + .filter-popup { + width: 100%; + height: 80vh; + background-color: #FFF; + position: relative; + border-radius: 30rpx 30rpx 0rpx 0rpx; + } + .filter-popup-item { + height: 100%; + width: 100%; + background-color: #c9cdd5; + } + .filter-popup-item-left { + width: 30%; + height: 100%; + background-color: #DCDFE6; + + } + .item-btn { + width: 100%; + height: 80rpx; + line-height: 80rpx; + background-color: #c9cdd5; + text-align: center; + } + .item-btn:checked { + background-color: #606266; + } + .filter-btn { + position: absolute; + left: 0; + bottom: 0; + width: 100%; + background-color: #FFF; + } + .item-cl { + display: flex;align-items: center; + } + .item-cl input { + border-bottom: 1px solid #b9b9b9; + } +</style> \ No newline at end of file diff --git a/pages/phyz/comOrder/orderOut.vue b/pages/phyz/comOrder/orderOut.vue new file mode 100644 index 0000000..58be010 --- /dev/null +++ b/pages/phyz/comOrder/orderOut.vue @@ -0,0 +1,410 @@ +<template> + <view> + <view class="code"> + <uni-search-bar v-model="searchValue1" + maxlength="500" ancel="cancel" @confirm="searchValueInput1()" @clear="clear" placeholder="杈撳叆 / 鎵弿 璁㈠崟鍙�"> + </uni-search-bar> + <view class="code-title"> + <view></view> + <view style="width: 100%;text-align: center;margin: 16rpx 0;"><text style="color: #0055ff;">{{docType}}</text> 鎬绘暟閲忥細- {{total}} -</view> + <view style="width: 100rpx;margin: 16rpx 0;" @click="filter()">绛涢��</view> + </view> + </view> + + <view class="list list-font-color" :class="orderDetl.color" v-for="(orderDetl,index) in dataList" :key="index"> + <view class="list-left"> + <view class="detl-threeCode">{{orderDetl.threeCode}}</view> + <view>涓诲崟鍙凤細{{orderDetl.orderNo}}</view> + <view>缂栧彿锛歿{orderDetl.matnr}}</view> + <view>鍚嶇О锛歿{orderDetl.maktx}}</view> + <view>绫诲瀷锛歿{orderDetl.brand}}</view> + <view>璁㈠崟鏁伴噺锛歿{orderDetl.anfme}}</view> + <view>搴撳瓨鏁伴噺锛歿{orderDetl.stock}}</view> + <view>宸插嚭鏁伴噺锛歿{orderDetl.qty}}</view> + </view> + <view class="list-right" @click="goToLocDetl(orderDetl)"> + <uni-icons type="right" size="25" color="#fff"></uni-icons> + </view> + </view> + + <!-- 鍨珮 --> + <view style="height: 340rpx;text-align: center;color: #b9b9b9;"> + - 宸茬粡鍒板簳浜� - + </view> + + <!-- <view class="buttom"> + <view style="width: 150rpx;text-align: center;padding-left: 12rpx;"> + 鍚嶇О + </view> + <uni-search-bar v-model="searchValue2" style="width: 100%;" + maxlength="500" ancel="cancel" @confirm="searchValueInput2()" @clear="clear2" placeholder="杈撳叆 / 鎵弿 璁㈠崟鍙�"> + </uni-search-bar> + </view> --> + <!-- 绛涢�夊脊绐� --> + <view> + <uni-popup ref="filter" type="dialog"> + <view class="filter-popup"> + <!-- 鏍囬 --> + <view class="title">绛涢��</view> + <hr> + <view class="popup-item" > + <view class="item-cl" > + <view>鍗曟嵁绫诲瀷锛�</view> + <view> + <uni-combox style="height: 30rpx;" :candidates="docTypes" placeholder="绫诲瀷" v-model="docType" @input="getDocType"></uni-combox> + </view> + + </view> + </view> + <view class="popup-item"> + <view class="item-cl"> + <view>閿�鍞鍗曪細</view> + <input type="text" v-model="searchValue1"> + </view> + </view> + <view class="popup-item"> + <view class="item-cl"> + <view>涓昏鍗曞彿锛�</view> + <input type="text" v-model="orderNo"> + </view> + </view> + <view class="popup-item"> + <view class="item-cl"> + <view>鍟嗗搧缂栧彿锛�</view> + <input type="text" v-model="matnr"> + </view> + </view> + <view class="popup-item"> + <view class="item-cl"> + <view>鍟嗗搧鍚嶇О锛�</view> + <input type="text" v-model="maktx"> + </view> + </view> + <view class="popup-item"> + <view class="item-cl"> + <view>鍟嗗搧绉嶇被锛�</view> + <input type="text" v-model="brand"> + </view> + </view> + <view class="btn filter-btn"> + <view class="btn-left" @click="filterClose">閲嶇疆</view> + <view class="btn-right" @click="filterConfirm()">纭</view> + </view> + </view> + </uni-popup> + </view> + </view> +</template> + +<script> + export default { + data() { + return { + baseUrl: '', + token: '', + searchValue1: '', + searchValue2: '', + orderNo: '', + matnr: '', + maktx: '', + brand: '', + total: '', + dataList: [], + orderCarList: [], + data: { + curr: 1, + limit: 100, + three_code: '', + matnr: '', + maktx: '', + order_no: '', + brand: '', + docType: 0 + }, + docTypes: [], + srDocTypes: [], + docType: '' + } + }, + onReachBottom() { + this.status = 'more'; + this.getOrderDetlList(this.searchValue1,10); + }, + onShow() { + this.baseUrl = uni.getStorageSync('baseUrl'); + this.token = uni.getStorageSync('token'); + this.searchValue1 = uni.getStorageSync('threeCodeOut1'); + this.searchValue2 = uni.getStorageSync('threeCodeOut2'); + this.getOrderDetlList(this.searchValue1,10) + this.getDocTypes() + }, + methods: { + getDocTypes() { + let _this = this + uni.request({ + url: `${_this.baseUrl}/doc/type/out/list`, + header: {'token': uni.getStorageSync('token')}, + method: 'GET', + success(res) { + res = res.data + if (res.code === 200) { + for (let k of res.data) { + _this.docTypes.push(k.docName) + } + _this.srDocTypes = res.data + } + } + }) + }, + getOrderDetlList(threeCode,limit) { + uni.showLoading({}) + let _this = this + _this.mask = true + _this.data.three_code = threeCode + _this.data.limit = limit + for (let k of this.srDocTypes) { + if (k.docName == this.docType) { + _this.data.docType = k.docId + } + } + uni.request({ + url: `${_this.baseUrl}/orderDetl/pakout/list/authV193`, + header: {'token': uni.getStorageSync('token')}, + data: _this.data, + method: 'GET', + success(res) { + uni.hideLoading({}) + res = res.data + if (res.code === 200) { + for (let k of res.data.records) { + if (k.anfme > k.qty && k.qty == 0) { + k['color'] = 'order-sts-start' + } else if (k.anfme > k.qty && k.qty != 0) { + k['color'] = 'order-sts-working' + } else { + k['color'] = 'order-sts-end' + } + } + let list = res.data.records + _this.dataList = _this.dataList.concat(list); + _this.data.curr = _this.data.curr + 1 + _this.total = res.data.total + _this.mask = false + } else if (res.code == 403) { + uni.showToast({ title: res.msg, icon: "error", position: 'top' }) + setTimeout(() => { uni.reLaunch({ url: '../../login/login' }); }, 1000); + } else { + uni.showToast({ title: res.msg, icon: "error", position: 'top' }) + } + } + }) + }, + searchValueInput1() { + this.dataList = [] + this.data.curr = 1 + uni.setStorageSync('threeCodeOut1', this.searchValue1); + uni.setStorageSync('threeCodeOut2', this.searchValue2); + if (this.searchValue1.length == 0) { + this.getOrderDetlList(this.searchValue1,10) + } else { + this.getOrderDetlList(this.searchValue1,10) + } + + }, + searchValueInput2() { + uni.setStorageSync('threeCodeOut1', this.searchValue1); + uni.setStorageSync('threeCodeOut2', this.searchValue2); + if (this.searchValue1.length == 0) { + this.getOrderDetlList(this.searchValue1,10) + } else { + this.getOrderDetlList(this.searchValue1,10) + } + }, + clear() { + this.dataList = [] + this.data.curr = 1 + setTimeout(()=> { + this.getOrderDetlList(this.searchValue,10) + },300) + }, + clear2() { + setTimeout(()=> { + this.searchValue2 = '' + this.getOrderDetlList(this.searchValue1,10) + },300) + }, + goToLocDetl(item) { + if (item.qty >= item.anfme) { + uni.showToast({ title: '宸插畬鎴愯鍗曚綔涓氭暟閲�', icon: "error", position: 'top' }) + return + } + let _this = this + uni.navigateTo({ + url: './checkOut', + success(res) { + res.eventChannel.emit('item', { + item: item + }) + }, + events: { + acceptDataFromOpenedPage: function(data) { + _this.getOrderDetlList(this.searchValue1,10) + } + } + }) + }, + // 绛涢�� + filter() { + this.$refs.filter.open('bottom') + }, + filterConfirm() { + this.dataList = [] + this.data.curr = 1 + this.data.maktx = this.maktx + this.data.matnr = this.matnr + this.data.order_no = this.order_no + this.data.brand = this.brand + this.getOrderDetlList(this.searchValue1,10) + this.$refs.filter.close() + }, + filterClose() { + this.dataList = [] + this.data.curr = 1 + this.data.maktx = '' + this.data.matnr = '' + this.data.order_no = '' + this.data.brand = '' + this.data.docType = 0 + this.docType = '' + this.searchValue = '' + this.maktx = '' + this.matnr = '' + this.orderNo = '' + this.brand = '' + this.getOrderDetlList(this.searchValue1,10) + this.$refs.filter.close() + } + + } + } +</script> + +<style> + @import url('../../../static/css/common/order.css'); + .list-font-color { + color: #fff; + /* background-color: #33bb44; */ + } + .order-sts-start { + background-color: #3eb689; + } + .order-sts-working { + background-color: #ff9d46; + } + .order-sts-end { + background-color: #ff7356; + } + .detl-threeCode { + font-size: 28px; + font-weight: bold; + } + + .title { + height: 100rpx; + line-height: 100rpx; + width: 100%; + color: #606266; + text-align: center; + font-size: 16px; + } + .popup-item { + height: 80rpx; + line-height: 80rpx; + display: flex; + align-items: center; + justify-content: center; + } + .popup-item-left { + width: 16vw; + padding-right: 20rpx; + text-align: right; + color: #606266; + } + .popup-item-right { + display: flex; + align-items: center; + width: 50vw; + height: 50rpx; + padding: 2px 5px; + border: 1px solid #E4E7ED; + border-radius: 5rpx; + } + .popup-item-right input{ + color: #606266; + } + .btn { + display: flex; + height: 90rpx; + margin-top: 20rpx; + border-top: 1px solid #DCDFE6; + justify-content: center; + align-items: center; + } + .btn-left { + display: flex; + flex: 1; + height: 100%; + justify-content: center; + align-items: center; + color: #606266; + border-right: 1px solid #DCDFE6; + } + .btn-right { + display: flex; + flex: 1; + justify-content: center; + align-items: center; + color: #409EFF; + } + .filter-popup { + width: 100%; + height: 80vh; + background-color: #FFF; + position: relative; + border-radius: 30rpx 30rpx 0rpx 0rpx; + } + .filter-popup-item { + height: 100%; + width: 100%; + background-color: #c9cdd5; + } + .filter-popup-item-left { + width: 30%; + height: 100%; + background-color: #DCDFE6; + + } + .item-btn { + width: 100%; + height: 80rpx; + line-height: 80rpx; + background-color: #c9cdd5; + text-align: center; + } + .item-btn:checked { + background-color: #606266; + } + .filter-btn { + position: absolute; + left: 0; + bottom: 0; + width: 100%; + background-color: #FFF; + } + .item-cl { + display: flex;align-items: center; + } + .item-cl input { + border-bottom: 1px solid #b9b9b9; + } +</style> diff --git a/pages/phyz/orderOut/orderOutSelect.vue b/pages/phyz/orderOut/orderOutSelect.vue index 4178c2d..1cb85b4 100644 --- a/pages/phyz/orderOut/orderOutSelect.vue +++ b/pages/phyz/orderOut/orderOutSelect.vue @@ -119,7 +119,7 @@ onShow() { this.baseUrl = uni.getStorageSync('baseUrl'); this.token = uni.getStorageSync('token'); - this.searchValue1 = uni.getStorageSync('threeCodeOut1'); + this.searchValue1 = uni.getStorageSync('threeCodeOut193'); this.searchValue2 = uni.getStorageSync('threeCodeOut2'); this.getOrderDetlList(this.searchValue1,10) }, @@ -131,7 +131,7 @@ _this.data.three_code = threeCode _this.data.limit = limit uni.request({ - url: `${_this.baseUrl}/orderDetl/pakout/list/authV3`, + url: `${_this.baseUrl}/orderDetl/pakout/list/authV193`, header: {'token': uni.getStorageSync('token')}, data: _this.data, method: 'GET', @@ -165,7 +165,7 @@ searchValueInput1() { this.dataList = [] this.data.curr = 1 - uni.setStorageSync('threeCodeOut1', this.searchValue1); + uni.setStorageSync('threeCodeOut193', this.searchValue1); uni.setStorageSync('threeCodeOut2', this.searchValue2); if (this.searchValue1.length == 0) { this.getOrderDetlList(this.searchValue1,10) @@ -175,7 +175,7 @@ }, searchValueInput2() { - uni.setStorageSync('threeCodeOut1', this.searchValue1); + uni.setStorageSync('threeCodeOut193', this.searchValue1); uni.setStorageSync('threeCodeOut2', this.searchValue2); if (this.searchValue1.length == 0) { this.getOrderDetlList(this.searchValue1,10) -- Gitblit v1.9.1