From b8a2d6da97b148e661997a97fa46d75bdea961e5 Mon Sep 17 00:00:00 2001 From: yyb <995253665@qq.com> Date: 星期三, 11 六月 2025 17:14:29 +0800 Subject: [PATCH] 移库功能点逻辑编写 --- pages/wareHouse/inventory/index.vue | 776 ++++++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 528 insertions(+), 248 deletions(-) diff --git a/pages/wareHouse/inventory/index.vue b/pages/wareHouse/inventory/index.vue index dedccde..eec0586 100644 --- a/pages/wareHouse/inventory/index.vue +++ b/pages/wareHouse/inventory/index.vue @@ -1,272 +1,552 @@ <template> <view class="page"> - <view class="inventory-list-bg"/> - <u-navbar title="鐩樼偣鍒楄〃" :background="background" :border-bottom="false" :title-bold="true" title-color="#000" back-icon-color="#000"/> - <view class="inventory-list-search"> - <u-search v-model="query.inyNo" shape="square" bg-color="rgba(250,252,255,0.36)" :show-action="false" placeholder="鐩樼偣缂栧彿" @clear="search" @custom="search" @search="search"> - </u-search> - </view> - <view class="wrap"> - <scroll-view class="inventory-list-scroll-list" scroll-y="true" @scrolltolower="loadMore"> - <u-cell-group class="inventory-list-scroll-list-group" :border="false"> - <view class="content" v-for="(item, index) in list" :key="index" :index="index" - @click="goDetail(item)"> - <view class="content-header"> - <view class="content-header-left"> - <view class="content-header-icon"></view> - <view class="content-header-title">鐩樼偣缂栧彿锛歿{ item.inyNo }}</view> - </view> - <view class="content-header-right"> - {{item.inyStatus=='finished'?'宸插畬鎴�':'鑽夌'}} - </view> - </view> - <view class="content-body"> - <view class="row-list"> - <view class="_label"> - <view class="_label-icon-1"> - </view> - <view class="_label-name">鐩樼偣鎻忚堪锛�</view> - </view> - <view class="_content"> - {{ item.inyDesc||'鏃�' }} - </view> - </view> - <view class="row-list"> - <view class="_label"> - <view class="_label-icon-2"> - </view> - <view class="_label-name">鍒� 寤� 浜猴細</view> - </view> - <view class="_content"> - {{ item.createUser }} - </view> - </view> - <view class="row-list"> - <view class="_label"> - <view class="_label-icon-3"> - </view> - <view class="_label-name">鍒涘缓鏃堕棿锛�</view> - </view> - <view class="_content"> - {{ item.createTime }} - </view> - </view> - </view> + <view class="packing-registration-bg" /> + <u-navbar title="鐩樼偣鎶ュ憡鐩樼偣" :background="background" :border-bottom="false" :title-bold="true" title-color="#000" + back-icon-color="#000" /> + <view class="packing-registration-param"> + <view class="packing-registration-param-view"> + <view class="packing-registration-param-item param-extra"> + <view class="packing-registration-param-item-left"> + <text class="item-one">鐩樼偣鎶ュ憡鍙�</text> + </view> + <view class="packing-registration-param-item-right"> + <text class="item-one item-two" @click="seachPersonnelNo()">{{ registerInfo.value1 == '' ? + "鐐瑰嚮閫夋嫨" : registerInfo.value1 }}</text> + <u-icon name="arrow-right" color="#687792" size="28" @click="seachPersonnelNo()" + v-show="registerInfo.value1 == ''"></u-icon> + </view> </view> - </u-cell-group> - <view class="loadmore" @click="loadMore"> - <u-loadmore :status="loadStatus"></u-loadmore> + <view class="packing-registration-param-item param-extra"> + <view class="packing-registration-param-item-left"> + <text class="item-one">浠撳簱</text> + </view> + <view class="packing-registration-param-item-right"> + <text class="item-one item-two">{{ registerInfo.value2 }}</text> + </view> + </view> + <view class="packing-registration-param-item param-extra"> + <view class="packing-registration-param-item-left"> + <text class="item-one">闆朵欢鍙�</text> + </view> + <view class="packing-registration-param-item-right"> + <view class="item-one item-two" @click="openPN()"> + <text>{{ registerInfo.value6 == '' ? "鐐瑰嚮杈撳叆" : registerInfo.value6 }}</text> + </view> + <u-icon name="arrow-right" color="#687792" size="28" v-show="registerInfo.value6 == ''"></u-icon> + </view> + </view> + <view class="packing-registration-param-item param-extra"> + <view class="packing-registration-param-item-left"> + <text class="item-one">鎵规鍙�</text> + </view> + <view class="packing-registration-param-item-right" @click="openBatch()"> + <text class="item-one item-two">{{ registerInfo.value3 == '' ? "鐐瑰嚮杈撳叆" : registerInfo.value3 }}</text> + <u-icon name="arrow-right" color="#687792" size="28" v-show="registerInfo.value3 == ''"></u-icon> + </view> + </view> + <view class="packing-registration-param-item param-extra"> + <view class="packing-registration-param-item-left"> + <text class="item-one">搴撲綅鍙�</text> + </view> + <view class="packing-registration-param-item-right" @click="openLocation()"> + <view class="item-one item-two"> + <text>{{ registerInfo.value4 == '' ? "鐐瑰嚮杈撳叆" : registerInfo.value4 }}</text> + </view> + <u-icon name="arrow-right" color="#687792" size="28" v-show="registerInfo.value4 == ''"></u-icon> + </view> + </view> + <view class="packing-registration-param-item param-extra"> + <view class="packing-registration-param-item-left"> + <text class="item-one">鐩樼偣鏁伴噺</text> + </view> + <view class="packing-registration-param-item-right" @click="openPhysicalInventory()"> + <view class="item-one item-two"> + <text>{{ registerInfo.value5 == '' ? "鐐瑰嚮杈撳叆" : registerInfo.value5 }}</text> + </view> + <u-icon name="arrow-right" color="#687792" size="28" v-show="registerInfo.value4 == ''"></u-icon> + </view> + </view> + <view class="packing-registration-param-item param-extra"> + <view class="packing-registration-param-item-left"> + <text class="item-one">鐩樼偣璁板綍锛�</text> + </view> + </view> </view> - </scroll-view> + </view> + <view class="wrap"> + <scroll-view class="packing-registration-scroll-list" scroll-y="true"> + <u-cell-group class="packing-registration-scroll-list-group" :border="false"> + <!-- <div class="tip" style="text-align: center;" v-if="hasScanSnList.length==0">-璇锋壂鐮�-</div> --> + <view class="content" v-for="(item, index) in hasScanSnList" :key="index" :index="index"> + <view class="content-header"> + <view class="content-header-title">{{ index + 1 }}</view> + </view> + <view class="content-body"> + <view class="row-list"> + <view class="_label"> + <view class="_label-name">闆朵欢鍙凤細</view> + </view> + <view class="_content"> + {{ item.value0 }} + </view> + </view> + <view class="row-list"> + <view class="_label"> + <view class="_label-name">鎵规鍙凤細</view> + </view> + <view class="_content"> + {{ item.value1 }} + </view> + </view> + <view class="row-list"> + <view class="_label"> + <view class="_label-name">搴撲綅鍙凤細</view> + </view> + <view class="_content"> + {{ item.value0 }} + </view> + </view> + <view class="row-list"> + <view class="_label"> + <view class="_label-name">鐩樼偣鏁伴噺锛�</view> + </view> + <view class="_content"> + {{ item.value1 }} + </view> + </view> + </view> + </view> + </u-cell-group> + </scroll-view> + <view class="registration-form-footer"> + <u-button class="btn" type="primary" @click="goSubmit">鎻愪氦</u-button> + </view> + <scan></scan> + <!-- 闆朵欢鍙� --> + <modalBg ref="openPN" :confirm="confirmPN"> + <u-field v-model="registerInfo.value6" label="闆朵欢鍙凤細" placeholder="璇疯緭鍏�" :border-bottom="false"> + </u-field> + </modalBg> + <!-- 鎵规鍙� --> + <modalBg ref="openBatch" :confirm="confirmBatch"> + <u-field v-model="registerInfo.value3" label="鎵规鍙凤細" placeholder="璇疯緭鍏�" :border-bottom="false"> + </u-field> + </modalBg> + <!-- 搴撲綅鍙� --> + <modalBg ref="openLocation" :confirm="confirmLocation"> + <u-field v-model="registerInfo.value4" label="搴撲綅鍙凤細" placeholder="璇疯緭鍏�" :border-bottom="false"> + </u-field> + </modalBg> + <!-- 鐩樼偣鏁伴噺 --> + <modalBg ref="openPhysicalInventory" :confirm="confirmPhysicalInventory"> + <u-field v-model="registerInfo.value5" label="鐩樼偣鏁伴噺锛�" label-width="140" placeholder="璇疯緭鍏�" :border-bottom="false"> + </u-field> + </modalBg> + </view> </view> - </view> </template> <script> - import content_bg from '@/static/custom/inventory/locNoBg.png' - export default { - data() { - return { - background:{ - backgroundImage: `url(${content_bg})`, - backgroundAttachment: 'fixed', - backgroundSize: '100% auto', - backgroundRepeat: 'no-repeat', - }, - keywords: '', - query: { - current: 1, - size: 20, - criteria:JSON.stringify({ - orderBy:{ - column:'createTime', - direction:'desc' - } - }) - }, - list: [], - count: 0, - loadStatus: 'loading' - }; +import modalBg from '@/components/modal/modal-bg.vue' +import scan from "@/components/scan/scan.vue"; +import content_bg from '@/static/custom/packing/backBg.png' +export default { + components: { + scan, + modalBg + }, + data() { + return { + background: { + backgroundImage: `url(${content_bg})`, + backgroundAttachment: 'fixed', + backgroundSize: '100% auto', + backgroundRepeat: 'no-repeat', + }, + labelStyle: { + fontSize: '32rpx', + whiteSpace: 'nowrap' + }, + registerInfo: { + value1: '', + value2: '', + value3: '', + value4: '', + value5: '', + value6: '' + }, + hasScanSnList: [{ + value0: '11111111111111111111111', + value1: '111', + value2: '111', + value3: '111', + }, + { + value0: '111', + value1: '111', + value2: '111', + value3: '111', + }, + { + value0: '111', + value1: '111', + value2: '111', + value3: '111', + }, + { + value0: '111', + value1: '111', + value2: '111', + value3: '111', + }, + ], + delContent: null, + staffList: [], + }; + }, + onLoad(option) { }, + onShow() { + + let that = this + + uni.$off('scan') // 姣忔杩涙潵鍏� 绉婚櫎鍏ㄥ眬鑷畾涔変簨浠剁洃鍚櫒 + uni.$on('scan', function (data) { + console.log('onscan'); + //鎵爜鎴愬姛鍚庣殑鍥炶皟锛屼綘鍙互鍐欒嚜宸辩殑閫昏緫浠g爜鍦ㄨ繖閲� + console.log('鎵爜缁撴灉锛�', data.code); + that.scanHandle(data.code) + that.$forceUpdate(); + + }) + }, + onNavigationBarButtonTap() { + this.goScan() + }, + onReady() { }, + methods: { + //闆朵欢鍙� + openPN() { + this.$refs.openPN.open(); }, - onLoad() { - this.loadList(); + // 寮规淇濆瓨 + confirmPN() { + console.log('淇濆瓨', this.registerInfo.value6); + // 璇锋眰鎺ュ彛锛屾牴鎹伐鍗曞彿鏌ヨ鍏朵粬淇℃伅骞惰祴鍊� }, - onShow() { + //鎵规鍙� + openBatch() { + this.$refs.openBatch.open(); + }, + // 寮规淇濆瓨 + confirmBatch() { + console.log('淇濆瓨', this.registerInfo.value3); + // 璇锋眰鎺ュ彛锛屾牴鎹伐鍗曞彿鏌ヨ鍏朵粬淇℃伅骞惰祴鍊� + }, + //搴撲綅鍙� + openLocation() { + this.$refs.openLocation.open(); + }, + // 寮规淇濆瓨 + confirmLocation() { + console.log('淇濆瓨', this.registerInfo.value4); + // 璇锋眰鎺ュ彛锛屾牴鎹伐鍗曞彿鏌ヨ鍏朵粬淇℃伅骞惰祴鍊� + }, + //鐩樼偣鏁伴噺 + openPhysicalInventory() { + this.$refs.openPhysicalInventory.open(); + }, + // 寮规淇濆瓨 + confirmPhysicalInventory() { + console.log('淇濆瓨', this.registerInfo.value5); + // 璇锋眰鎺ュ彛锛屾牴鎹伐鍗曞彿鏌ヨ鍏朵粬淇℃伅骞惰祴鍊� + }, + + setNo(val) { + console.log('11111', val) + this.registerInfo.value1 = val.value1 + this.registerInfo.value2 = val.value2 }, - filters: { - inyStatus(val) { - let inyStatus = { - finished: '宸插畬鎴�', - draft: '鑽夌', + //鐩樼偣鎶ュ憡鍙� + seachPersonnelNo() { + console.log('11111') + uni.navigateTo({ + url: '/pages/wareHouse/inventory/orderList' + }) + }, + goScan() { + uni.scanCode({ + scanType: ['qrCode'], + success: res => { + try { + console.log('鎵爜缁撴灉锛�', res); + this.scanHandle(res.result) + } catch (e) { } } - return inyStatus[val] + }); + }, + scanHandle(scanresult) { + scanresult = scanresult.replace(/[\r\n]/g, "") + if (scanresult.indexOf('{') > -1) { + //浜岀淮鐮� + const result = JSON.parse(scanresult) + //澧炲姞SN鏍¢獙 + if (result.sn_no && result.sn_no != null && result.sn_no != '') { + if (this.hasScanSnList.length > 0) { + let hasScanSnIndex = this.hasScanSnList.indexOf(result.sn_no) + if (hasScanSnIndex < 0) { + this.hasScanSnList.push(result.sn_no) + } else { + this.$u.toast('璇峰嬁閲嶅鎵弿') + } + } else { + this.hasScanSnList.push(result.sn_no) + } + } + + } else { + //澧炲姞SN鏍¢獙 + if (this.hasScanSnList.length > 0) { + let hasScanSnIndex = this.hasScanSnList.indexOf(scanresult) + if (hasScanSnIndex < 0) { + this.hasScanSnList.push(scanresult) + } else { + this.$u.toast('璇峰嬁閲嶅鎵弿') + } + } else { + this.hasScanSnList.push(scanresult) + } } }, - methods: { - loadMore() { - if(this.loadStatus == "nomore"){ - return - } - this.loadStatus = "loading"; - setTimeout(() => { - this.query.current += 1; - this.loadList(); - }, 100); - }, - loadList() { - this.$u.api.inventory.getMain(this.query).then(res => { - this.list = this.list.concat(res.data.records); - //this.total = res.data.total; - this.query.current = res.data.current; - this.query.size = res.data.size; - this.loadStatus = "loadmore"; - if (!res.data.records || res.data.records.length < this.query.size) { - this.loadStatus = "nomore"; - } - }); - }, - search(value) { - this.list = []; - this.query.current = 1; - this.loadList(); - }, - goDetail(item) { - if(item.inyStatus === 'finished'){ - uni.showToast({ - title: "鐩樼偣宸插畬鎴愩��", - icon: "none" - }); - return - } - uni.navigateTo({ - url: `/pages/wareHouse/inventory/detail?id=${item.id}&no=${item.inyNo}` - }) - } - } - }; + goSubmit() { + // if (this.registerInfo.shiftId == null || this.registerInfo.shiftId == '') { + // this.$u.toast('璇烽�夋嫨鐝') + // return + // } + // if (this.registerInfo.value3 == null || this.registerInfo.value3 == '') { + // this.$u.toast('璇烽�夋嫨鏃ユ湡') + // return + // } + // if (this.registerInfo.locNo == null || this.registerInfo.locNo == '') { + // this.$u.toast('璇烽�夋嫨鍖呰搴撲綅') + // return + // } + // if (this.hasScanSnList.length == 0) { + // this.$u.toast('鏃犲緟鎻愪氦鐨凷N鍙锋槑缁�') + // return + // } + // let registrList = [] + // this.staffList = [] + // this.staffNameList.forEach((item) => { + // this.staffList.push({ + // staffId: item.id + // }) + // }) + // this.hasScanSnList.forEach((item) => { + // registrList.push({ + // shiftId: this.registerInfo.shiftId, + // value3: this.registerInfo.value3, + // locNo: this.registerInfo.locNo, + // partBatchNo: item, + // staffList: this.staffList + // }) + // }) + // this.$u.api.pigxPacking.addPackageRegister(registrList).then(res => { + // let resData = res.data + // this.hasScanSnList = [] + // this.$u.toast('鎻愪氦鎴愬姛') + // }).catch((e) => { + // }) + + }, + } +}; </script> -<style scoped lang="scss"> - .inventory-list-bg{ - background-color: #F6F9FF; - background-image: url('~@/static/custom/inventory/locNoBg.png'); - // background: linear-gradient(180deg,rgba(206,227,254,1),rgba(206,227,254,1) 20%,rgba(206,227,254,0.5) 40%,rgba(206,227,254,0.25) 60%,rgba(206,227,254,0.08) 80%,rgba(206,227,254,0)); - padding: 0 20rpx; - background-attachment: fixed; - background-size: 100% auto; - background-repeat: no-repeat; - position: fixed; - top: 0; - bottom: 0; - width: 100%; - z-index: -1; +<style lang="scss" scoped> +.packing-registration-bg { + background-color: #F6F9FF; + background-image: url('~@/static/custom/packing/backBg.png'); + padding: 0 20rpx; + background-attachment: fixed; + background-size: 100% auto; + background-repeat: no-repeat; + position: fixed; + top: 0; + bottom: 0; + width: 100%; + z-index: -1; +} + +.packing-registration-param { + padding: 40rpx 30rpx 10rpx 30rpx; + + .packing-registration-param-title { + display: flex; + flex-direction: row; + align-items: center; + margin-bottom: 30rpx; + + .title-label { + margin-left: 14rpx; + font-size: 34rpx; + font-weight: bold; + color: #283E65; + } } - - .inventory-list-search{ - padding: 40rpx 30rpx 20rpx 30rpx; - } - .wrap .inventory-list-scroll-list{ - height:calc(100vh - var(--window-top) - var(--window-bottom) - 242rpx); - width:100%; - } - .inventory-list-scroll-list-group{ - ::v-deep .u-cell-item-box { - background-color:rgba(250,252,255,0.36) !important; - padding:0rpx 30rpx ; - } - .content { - font-size: 12px; - background-color: #FFFFFF; - box-sizing: border-box; - border-radius: 10rpx; - margin: 0rpx 0rpx 16rpx; - height: 298rpx; - padding: 10rpx 20rpx; - box-shadow: none; - .content-header{ - height: 90rpx; - display: flex; - align-items:center; - justify-content: space-between; - .content-header-left{ - display: flex; - align-items:center; - .content-header-icon{ - background-image: url('~@/static/custom/inventory/icon_5.png'); - background-size: 100% auto; - background-repeat: no-repeat; - height:28rpx; - width:28rpx; - } - .content-header-title{ - margin-left: 11rpx; - font-size: 28rpx; - font-weight: bold; - color: #333333; - } - } - .content-header-right{ - text-align: right; - font-weight: bold; - color: #FB5B25; + + .packing-registration-param-view { + height: 615rpx; + background-color: #fff; + border-radius: 10rpx; + padding: 0rpx 23rpx; + margin-bottom: 30rpx; + + .packing-registration-param-item { + height: 90rpx; + border: 1px solid #ADC8E4; + line-height: 90rpx; + display: flex; + justify-content: space-between; + border: none; + + .packing-registration-param-item-left { + .item-one { + font-size: 30rpx; + color: #666666; } } - .content-body{ - height:184rpx; - background: #F5F9FF; - border-radius: 10rpx; - padding: 0rpx 23rpx; - .row-list { - height: 60rpx; - display: flex; - flex-direction: row; - padding: 0px; - align-items: center; + + .packing-registration-param-item-right { + display: flex; + justify-content: space-between; + + .item-one { + font-size: 30rpx; + color: #333333; + margin-right: 6rpx; } - .row-list ._label { - display: flex; - flex: 0.6; - color: #909399; - align-items: center; - ._label-icon-1{ - background-image: url('~@/static/custom/inventory/label-icon-1.png'); - background-size: 100% auto; - background-repeat: no-repeat; - height:26rpx; - width:26rpx; - } - ._label-icon-2{ - background-image: url('~@/static/custom/inventory/icon3.png'); - background-size: 100% auto; - background-repeat: no-repeat; - height:26rpx; - width:26rpx; - } - ._label-icon-3{ - background-image: url('~@/static/custom/inventory/icon4.png'); - background-size: 100% auto; - background-repeat: no-repeat; - height:26rpx; - width:26rpx; - } - ._label-name{ - margin-left: 11rpx; - font-size: 26rpx; - font-weight: 500; - color: #909399; - - } + + .item-two { + font-size: 30rpx; + color: #A6B4CC; + margin-right: 6rpx; } - - .row-list ._content { - flex: 1.5; - color: #666666; - font-size: 24rpx; - } - .row-list .s1 { - color:#D35651; + + .item-three { + font-size: 30rpx; + color: #214DED; + margin-right: 6rpx; } } } + + .param-extra { + border-bottom: 1px solid #EDEDED; + } } -</style> +} + +.wrap .packing-registration-scroll-list { + height: calc(100vh - var(--window-top) - var(--window-bottom) - 930rpx); + width: 100%; +} + +.packing-registration-scroll-list-group { + ::v-deep .u-cell-item-box { + background-color: rgba(250, 252, 255, 0.36) !important; + padding: 0rpx 30rpx; + } + + .content { + font-size: 12px; + background-color: #ffffff; + box-sizing: border-box; + border-radius: 10rpx; + margin: 0rpx 0rpx 16rpx; + padding: 20rpx 8rpx; + box-shadow: none; + display: flex; + align-items: center; + + .content-header { + width: 40rpx; + height: 90rpx; + display: flex; + align-items: center; + + .content-header-icon { + background-image: url("~@/static/custom/moveWareHouse/header_icon.png"); + background-size: 100% auto; + background-repeat: no-repeat; + height: 28rpx; + width: 28rpx; + } + + .content-header-title { + margin-left: 11rpx; + font-size: 26rpx; + font-weight: bold; + color: #626369; + } + } + + .content-body { + flex: 1; + background-color: #ffffff; + border-radius: 10rpx; + padding: 0rpx 23rpx; + + .row-list { + height: 60rpx; + display: flex; + flex-direction: row; + padding: 0px; + align-items: center; + } + + .row-list ._label { + display: flex; + flex: 0.8; + color: #909399; + align-items: center; + + ._label-name { + margin-left: 11rpx; + font-size: 26rpx; + font-weight: 500; + color: #666666; + } + } + + .row-list ._content { + flex: 1.5; + text-align: right; + color: #909399; + font-size: 24rpx; + } + + .row-list .s1 { + color: #d35651; + } + } + } +} + +.registration-form-footer { + display: flex; + margin-top: 10rpx; + margin-bottom: 10rpx; + margin-left: 20rpx; + margin-right: 20rpx; + padding-bottom: 14rpx; + + .btn { + flex: 1; + margin: 10rpx; + background: #214DED; + box-shadow: 0rpx 6rpx 8rpx 0rpx rgba(4, 49, 212, 0.3); + font-weight: bold; + color: #FEFEFE; + font-family: PingFang SC; + } +} +</style> \ No newline at end of file -- Gitblit v1.9.3