From f26f29d84e0a68831a6af14dab3eec5500496d2e Mon Sep 17 00:00:00 2001 From: spring <2396852758@qq.com> Date: 星期三, 28 五月 2025 16:48:52 +0800 Subject: [PATCH] 初始化项目 --- pages/wareHouse/productBack/index.vue | 487 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 487 insertions(+), 0 deletions(-) diff --git a/pages/wareHouse/productBack/index.vue b/pages/wareHouse/productBack/index.vue new file mode 100644 index 0000000..4a603e7 --- /dev/null +++ b/pages/wareHouse/productBack/index.vue @@ -0,0 +1,487 @@ +<template> + <view class="page"> + <view class="warehouse-productback-bg"/> + <u-navbar title="閫�搴�" :background="background" :border-bottom="false" :title-bold="true" title-color="#000" back-icon-color="#000"/> + <view class="warehouse-productback-param"> + <view class="warehouse-productback-param-view"> + <view class="warehouse-productback-param-item"> + <view class="warehouse-productback-param-item-left"> + <text class="item-one">鑷姩鎻愪氦</text> + </view> + <view class="warehouse-productback-param-item-right"> + <!--<text class="item-one">{{isAuto?'鏄�':'鍚�'}}</text>--> + <picker class="item-one" style="width: 100%;" @change="autoNumBindChange($event,isAutoList)" :value="autoNumIndex" :range="isAutoList" + range-key="label"> + <view> + <text>{{isAutoList[autoNumIndex].label}}</text> + </view> + </picker> + <u-icon name="arrow-right" color="#687792" size="28"></u-icon> + </view> + </view> + </view> + </view> + <view class="wrap"> + <scroll-view class="warehouse-productback-scroll-list" scroll-y="true"> + <u-cell-group class="warehouse-productback-scroll-list-group" :border="false"> + <view class="content" v-for="(item, index) in list" :key="item.id" :index="index"> + <view class="content-header"> + <view class="header-item"> + <view class="content-header-icon-one"></view> + <view class="content-header-title">{{ item.partBatchNo }}</view> + </view> + <view class="header-item"> + <view class="content-header-icon-two"></view> + <view class="content-header-title-ne">{{ item.partName }}</view> + </view> + <!--<view class="header-item-toolbar" @click="deleteHandle(item)"> + <view class="header-item-toolbar-del-icon"> + + </view> + <view class="header-item-toolbar-del-text"> + 鍒犻櫎 + </view> + </view>--> + </view> + <view class="content-body"> + <view class="row-list"> + <view class="_label"> + 闆朵欢缂栧彿锛� + </view> + <view class="_content"> + {{ item.partNo }} + </view> + </view> + <view class="row-list"> + <view class="_label"> + 鍏ュ簱鍓嶅簱浣嶏細 + </view> + <view class="_content"> + {{ item.locationNo }} + </view> + </view> + <view class="row-list"> + <view class="_label"> + 搴撳瓨鏁伴噺锛� + </view> + <view class="_content"> + <text class="_content-text">{{ Math.abs(item.quantity) }}({{ item.unit }})</text> + </view> + </view> + <view class="row-list"> + <view class="_label"> + 杞Щ鏁伴噺锛� + </view> + <view class="_content _input"> + <u-input placeholder="璇疯緭鍏ヨ浆绉绘暟閲�" v-model="item.moveQty" type="digit"></u-input> + <view class="edit_icon"></view> + </view> + </view> + </view> + </view> + </u-cell-group> + </scroll-view> + <scan></scan> + + <view class="productBack-form-footer" v-if="list.length>0"> + <u-button class="btn" type="primary" @click="submit">鎻愪氦</u-button> + </view> + </view> + </view> +</template> +<script> + import scan from "@/components/scan/scan.vue"; + import content_bg from '@/static/custom/productBack/backBg.png' + export default { + components: { + scan + }, + data() { + return { + background:{ + backgroundImage: `url(${content_bg})`, + backgroundAttachment: 'fixed', + backgroundSize: '100% auto', + backgroundRepeat: 'no-repeat', + }, + list: [], + isAuto:false, + isAutoList:[ + {value:false,label:'鍚�'}, + {value:true,label:'鏄�'} + ], + autoNumIndex:0 + }; + }, + onLoad() { + // this.loadList("221130000923N"); + }, + onShow() { + + let that = this + + uni.$off('scan') // 姣忔杩涙潵鍏� 绉婚櫎鍏ㄥ眬鑷畾涔変簨浠剁洃鍚櫒 + uni.$on('scan', function(data) { + console.log('onscan'); + //鎵爜鎴愬姛鍚庣殑鍥炶皟锛屼綘鍙互鍐欒嚜宸辩殑閫昏緫浠g爜鍦ㄨ繖閲� + let sn = '' + let snNoIndex=data.code.indexOf('sn_no') + if(snNoIndex>-1){ + sn = JSON.parse(data.code.replace(/\n/g, '').replace(/\s*/g, '')).sn_no.trim() + }else{ + sn = JSON.parse(data.code.replace(/\n/g, '').replace(/\s*/g, '')).lot_batch_no.trim() + } + console.log('鎵爜缁撴灉锛�' + sn); + + //鍒ゆ柇鏁扮粍涓槸鍚﹀瓨鍦� SN 鏄惁宸茬粡瀛樺湪 + let initList = that.list.filter(item => item + .partBatchNo == sn) + if (initList.length > 0) { + uni.showToast({ + title: "SN:" + sn + ",宸插瓨鍦�,璇烽�夋嫨鍙︿竴涓猄N鍙�", + icon: "none" + }); + return + } + + that.loadList(sn); + }) + }, + onNavigationBarButtonTap(e) { + uni.scanCode({ + success: res => { + try { + const result = JSON.parse(res.result) + + } catch (e) {} + } + }); + }, + methods: { + autoNumBindChange(e,storage){ + if (storage.length <= 0) { + this.autoNumIndex = null + return + } + this.autoNumIndex = e.target.value + this.isAuto = storage[this.autoNumIndex].value + }, + loadList(sanCode) { + uni.showLoading({ + mask: true, + title: "鍔犺浇涓�", + }); + let that = this + + if (sanCode != "") { + let data = { + sn: sanCode + } + + //鍒ゆ柇鏁扮粍涓槸鍚﹀瓨鍦� 鑷冲簱浣嶅彿 SN + let initList = that.list.filter(item => item + .partBatchNo == sanCode) + if (initList.length > 0) { + uni.showToast({ + title: "SN:" + sanCode + ",宸茬粡鎵繃鐮�", + icon: "none" + }); + return + } + + // 鏌ヨ閫�搴撲俊鎭� + that.$u.api.backWareHouse.getTransactionBySn(data).then(res => { + let reList = [] + reList = res.data + if (!reList) { + uni.showToast({ + title: "SN:" + sanCode + ",鏈壂鍒扮Щ搴撲俊鎭�", + icon: "none" + }); + } else { + that.list = [] + reList.moveQty = Math.abs(reList.quantity) + that.list.push(reList) + } + uni.hideLoading(); + if(that.isAuto){ + that.submit() + } + }) + } + }, + + submit() { + let that = this + if(that.list.length === 0){ + uni.showToast({ + title: '娌℃湁鍙彁浜ょ殑鏁伴噺', + icon: "none" + }); + return + } + let item = that.list[0] + if (item.moveQty.length === 0) { + uni.showToast({ + title: '璇疯緭鍏ヨ浆绉婚噺', + icon: "none" + }); + return + } + + if (item.moveQty <= 0) { + uni.showToast({ + title: '杞Щ閲忓繀椤诲ぇ浜�0', + icon: "none" + }); + return + } + if (item.moveQty > Math.abs(item.quantity)) { + uni.showToast({ + title: '杞Щ閲忎笉鑳藉ぇ浜庡彲鐢ㄥ簱瀛樻暟閲�', + icon: "none" + }); + return + } + that.$u.api.backWareHouse.returnStockBySn({ + sn: that.list[0].partBatchNo, + quantity: that.list[0].moveQty + }).then(res => { + if (res.code == 0) { + uni.showModal({ + title: '鎻愮ず', + content: '鎻愪氦鎴愬姛', + showCancel: false, + success: function() { + that.list = [] + } + }) + } else { + uni.showModal({ + title: '鎻愮ず', + content: '鎻愪氦澶辫触', + showCancel: false, + success: function() { + + } + }) + } + + }) + }, + } + }; +</script> +<style lang="scss" scoped> + .warehouse-productback-bg{ + background-color: #F6F9FF; + background-image: url('~@/static/custom/productBack/backBg.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; + } + + .warehouse-productback-param{ + padding: 50rpx 30rpx 0rpx 30rpx; + .warehouse-productback-param-view{ + height: 100rpx; + background: rgba(255,255,255,0.61); + box-shadow: 0rpx 6rpx 8rpx 0rpx rgba(110,120,135,0.09); + border-radius: 10rpx; + padding:0rpx 23rpx; + margin-bottom: 30rpx; + .warehouse-productback-param-item{ + height: 100rpx; + border: 1px solid #ADC8E4; + line-height: 100rpx; + display:flex; + justify-content: space-between; + border: none; + .warehouse-productback-param-item-left{ + .item-one{ + font-size: 30rpx; + color: #4F4F4F; + } + } + .warehouse-productback-param-item-right{ + display: flex; + .item-one{ + font-size: 30rpx; + color: #333333; + margin-right: 6rpx; + } + .item-two{ + font-size: 30rpx; + color: #A6B4CC; + margin-right: 6rpx; + } + .item-three{ + font-size: 30rpx; + color: #214DED; + margin-right: 6rpx; + } + } + } + .param-extra{ + border-bottom: 1px solid #E8EBEE; + } + } + } + + .wrap .warehouse-productback-scroll-list{ + height:calc(100vh - var(--window-top) - var(--window-bottom) - 402rpx); + width:100%; + } + + .warehouse-productback-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 24rpx; + height: 382rpx; + padding: 10rpx 20rpx; + box-shadow:0rpx 6rpx 12rpx 2rpx rgba(127, 127, 127, 0.1) !important; + position:relative; + .content-header{ + .header-item{ + height: 50rpx; + display: flex; + align-items:center; + .content-header-icon-one{ + background-image: url('~@/static/custom/productBack/label-icon-1.png'); + background-size: 100% auto; + background-repeat: no-repeat; + height:28rpx; + width:28rpx; + } + .content-header-icon-two{ + background-image: url('~@/static/custom/productBack/label-icon-2.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: #333333; + } + .content-header-title-ne{ + margin-left: 11rpx; + font-size: 26rpx; + color: #333333; + } + } + .header-item-toolbar{ + position: absolute; + background-image: url('~@/static/custom/product/del-icon.png'); + background-size: 100% auto; + background-repeat: no-repeat; + height:60rpx; + width:140rpx; + right:0; + top:0; + display: flex; + justify-content: flex-end; + padding-top: 10rpx; + padding-right: 18rpx; + .header-item-toolbar-del-icon{ + background-image: url('~@/static/custom/product/icon_dele.png'); + background-size: 100% auto; + background-repeat: no-repeat; + height:25rpx; + width:22rpx; + margin-top: 5rpx; + } + .header-item-toolbar-del-text{ + margin-left:7rpx; + height: 23rpx; + font-size: 24rpx; + color: #FFFFFF; + } + } + } + + .content-body{ + height:250rpx; + background: #F5F9FF; + border-radius: 10rpx; + padding: 25rpx 23rpx; + .row-list { + height: 50rpx; + display: flex; + flex-direction: row; + padding: 0px; + align-items: center; + justify-content: space-between; + } + .row-list ._label { + display: flex; + color: #666666; + font-size:26rpx; + align-items: center; + width: 170rpx; + } + + .row-list ._content { + text-align: right; + color: #909399; + font-size: 24rpx; + ._content-text{ + color:#214ded; + } + } + .row-list ._input { + display: flex; + justify-content: space-between; + align-items: center; + border-bottom: 1px solid #4FA0FF; + height: 56rpx; + .edit_icon{ + background-image: url('~@/static/custom/productBack/icon_edit.png'); + background-size: 100% auto; + background-repeat: no-repeat; + height:26rpx; + width:26rpx; + } + ::v-deep .uni-input-input{ + color:#D35651; + } + } + } + } + } + + .productBack-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> -- Gitblit v1.9.3