New file |
| | |
| | | <template> |
| | | <view class="has-foot"> |
| | | <form> |
| | | <view class="cu-form-group" v-show="!isconfirm"> |
| | | <view class="title">容器号</view> |
| | | <input placeholder="请扫描容器号" v-model="barcode" focus></input> |
| | | <text class='cuIcon-close text-gray margin-right-xs' v-show="barcode!==''" @click="clearCode"></text> |
| | | <text class='cuIcon-search text-blue' @click="search"></text> |
| | | </view> |
| | | <view class="cu-form-group" v-show="isconfirm"> |
| | | <view class="title">物料码</view> |
| | | <input placeholder="请扫描物料码" v-model="matnr" focus></input> |
| | | <text class='cuIcon-close text-gray margin-right-xs' v-show="matnr!==''" @click="clearCode"></text> |
| | | <text class='cuIcon-search text-blue' @click="addMatnr" v-show="matnr!==''"></text> |
| | | |
| | | </view> |
| | | </form> |
| | | |
| | | <view class="cu-list det menu sm-border padding"> |
| | | <block v-for="(item, index) in list" v-if="!isconfirm"> |
| | | <view class="cu-list det menu "> |
| | | <view class="cu-bar bg-white solid-bottom margin-top-sm"> |
| | | <view class="action"> |
| | | <view class="index"> |
| | | {{index+1}} |
| | | </view> |
| | | </view> |
| | | <view class="content2"> |
| | | <text class="text-gray"><text class="text-black ">{{item.exceStatus$}}</text></text> |
| | | </view> |
| | | </view> |
| | | <view class="cu-item"> |
| | | <view class="content"> |
| | | <text class="text-gray">物料编码:<text class="text-black ">{{item.matnrCode}}</text></text> |
| | | </view> |
| | | </view> |
| | | <view class="cu-item"> |
| | | <view class="content"> |
| | | <text class="text-gray">物料名称:<text class="text-black ">{{item.maktx}}</text></text> |
| | | </view> |
| | | </view> |
| | | <view class="cu-item"> |
| | | <view class="content"> |
| | | <text class="text-gray">批次:<text class="text-black ">{{item.batch}}</text></text> |
| | | </view> |
| | | </view> |
| | | <view class="cu-item" v-if="check.checkType === 0"> |
| | | <view class="content"> |
| | | <text class="text-gray">托盘库存数:<text class="text-black ">{{item.anfme}}</text></text> |
| | | </view> |
| | | </view> |
| | | <view class="cu-item"> |
| | | <view class="content"> |
| | | <view class="cu-form-group padding-lr-0"> |
| | | <view class="title text-blue"><text class="text-red text-xl vertical-middle"></text>实盘数: |
| | | </view> |
| | | <uni-number-box style="width: 70%;" :max="max" v-model="item.checkQty" |
| | | :step='1'></uni-number-box> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="cu-item"> |
| | | <view class="content"> |
| | | <view class="cu-form-group padding-lr-0"> |
| | | <text class=" text-blue">备注:</text> |
| | | <input placeholder="请输入备注" v-model="item.memo"></input> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="cu-item" v-if="item.checkQty !== item.anfme && check.checkType === 0"> |
| | | <view class="content"> |
| | | <view class="cu-form-group padding-lr-0"> |
| | | <view class=" text-blue">差异原因:</view> |
| | | <view style="width: 80%;"> |
| | | <uni-data-select style="min-width: 90%; max-width: 90%;" v-model="item.reason" |
| | | :localdata="reasons" placement="top"></uni-data-select> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </block> |
| | | |
| | | <block v-for="(item, index) in matnrList"> |
| | | <view class="cu-list det menu "> |
| | | <view class="cu-bar bg-white solid-bottom margin-top-sm"> |
| | | <view class="action"> |
| | | <view class="index"> |
| | | {{index+1}} |
| | | </view> |
| | | </view> |
| | | <view class="action"> |
| | | <text @click="remove(index)" class="cuIcon-close text-red" style="font-size: 24px;"></text> |
| | | </view> |
| | | </view> |
| | | <view class="cu-item"> |
| | | <view class="content"> |
| | | <text class="text-gray">物料编码:<text class="text-black ">{{item.matnrCode}}</text></text> |
| | | </view> |
| | | </view> |
| | | <view class="cu-item"> |
| | | <view class="content"> |
| | | <text class="text-gray">物料名称:<text class="text-black ">{{item.maktx}}</text></text> |
| | | </view> |
| | | </view> |
| | | <view class="cu-item" v-if="check.checkType === 0"> |
| | | <view class="content"> |
| | | <text class="text-gray">库存数:<text class="text-black ">{{item.anfme}}</text></text> |
| | | </view> |
| | | </view> |
| | | <view class="cu-item"> |
| | | <view class="content"> |
| | | <view class="cu-form-group padding-lr-0"> |
| | | <text class=" text-blue">批次:</text> |
| | | <input placeholder="请输入批次" v-model="item.batch"></input> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="cu-item"> |
| | | <view class="content"> |
| | | <view class="cu-form-group padding-lr-0"> |
| | | <view class="title text-blue"><text class="text-red text-xl vertical-middle"></text>实盘数: |
| | | </view> |
| | | <uni-number-box style="width: 70%;" :max="max" v-model="item.checkQty" |
| | | :step='1'></uni-number-box> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="cu-item"> |
| | | <view class="content"> |
| | | <view class="cu-form-group padding-lr-0"> |
| | | <text class=" text-blue">备注:</text> |
| | | <input placeholder="请输入备注" v-model="item.memo"></input> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="cu-item" v-if="item.checkQty !== item.anfme && check.checkType === 0"> |
| | | <view class="content"> |
| | | <view class="cu-form-group padding-lr-0"> |
| | | <view class=" text-blue">差异原因</view> |
| | | <view style="width: 80%;"> |
| | | <uni-data-select style="min-width: 90%; max-width: 90%;" v-model="item.reason" |
| | | :localdata="reasons" placement="top"></uni-data-select> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </block> |
| | | </view> |
| | | |
| | | <view class="cu-bar btn-group foot" v-show="!isconfirm"> |
| | | <button class="cu-btn text-blue line-blue shadow" @click="clear">清空</button> |
| | | <button class="cu-btn bg-orange shadow-blur" @click="returnPage">添加明细</button> |
| | | <button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="complete">提交</button> |
| | | </view> |
| | | |
| | | <view class="cu-bar btn-group foot" v-show="isconfirm"> |
| | | <button class="cu-btn text-blue line-blue shadow" @click="returnPage">返回</button> |
| | | <button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="sureAdd">确定添加</button> |
| | | </view> |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | request |
| | | } from '../../common/request.js' |
| | | import { |
| | | mapState, |
| | | mapMutations, |
| | | mapActions, |
| | | mapGetters |
| | | } from 'vuex'; |
| | | export default { |
| | | data() { |
| | | return { |
| | | check: '', |
| | | list: [], |
| | | isconfirm: false, |
| | | barcode: '', |
| | | max: 99999999, |
| | | repeatClick: false, |
| | | reasons: [], |
| | | matnr: '', |
| | | matnrList:[] |
| | | |
| | | } |
| | | }, |
| | | computed: { |
| | | |
| | | |
| | | }, |
| | | mounted() { |
| | | this.getReasons() |
| | | }, |
| | | onLoad() { |
| | | let that = this |
| | | const eventChannel = this.getOpenerEventChannel(); |
| | | |
| | | eventChannel.on('checkItem', function(data) { |
| | | that.check = data.data |
| | | |
| | | }) |
| | | |
| | | }, |
| | | methods: { |
| | | sureAdd(){ |
| | | if(this.matnrList.length === 0){ |
| | | uni.showToast({ |
| | | title: "请添加物料明细", |
| | | icon: "none", |
| | | position: 'top' |
| | | }) |
| | | return ; |
| | | } |
| | | this.list.push(...this.matnrList) |
| | | this.matnrList = [] |
| | | this.isconfirm = !this.isconfirm |
| | | }, |
| | | remove(index) { |
| | | this.matnrList.splice(index, 1); |
| | | }, |
| | | async addMatnr() { |
| | | const { |
| | | code, |
| | | data, |
| | | msg |
| | | } = await request('/selectAddMatnr', { |
| | | matnr:this.matnr |
| | | }) |
| | | if (code === 200) { |
| | | this.matnrList.push(data) |
| | | this.matnr = '' |
| | | } |
| | | }, |
| | | returnPage() { |
| | | this.matnrList = [] |
| | | this.isconfirm = !this.isconfirm |
| | | }, |
| | | async getReasons() { |
| | | const { |
| | | code, |
| | | data, |
| | | msg |
| | | } = await request('/getCheckDiffReasonList', {}, 'get') |
| | | if (code === 200) { |
| | | this.reasons = data.map(item => ({ |
| | | value: item.id, |
| | | text: item.label |
| | | })); |
| | | } |
| | | }, |
| | | clear() { |
| | | this.barcode = '' |
| | | this.list = [] |
| | | }, |
| | | clearCode() { |
| | | this.barcode = '' |
| | | this.matnr = '' |
| | | }, |
| | | async search() { |
| | | this.list = [] |
| | | // if(this.barcode === '' || this.barcode ===null){ |
| | | // return ; |
| | | // } |
| | | const { |
| | | code, |
| | | data, |
| | | msg |
| | | } = await request('/getCheckTaskItemList2', { |
| | | barcode: this.barcode |
| | | }) |
| | | if (code === 200) { |
| | | if (Object.keys(data).length === 0) { |
| | | uni.showToast({ |
| | | title: "该标签未查询到数据", |
| | | icon: "none", |
| | | position: 'top' |
| | | }) |
| | | } |
| | | for (var i = 0; i < data.checkDiffItems.length; i++) { |
| | | data.checkDiffItems[i].checkQty = data.checkDiffItems[i].anfme |
| | | } |
| | | this.list = data.checkDiffItems |
| | | this.check = data.checkDiff |
| | | |
| | | } else if (code == 401) { |
| | | setTimeout(() => { |
| | | uni.removeStorageSync('token'); |
| | | uni.reLaunch({ |
| | | url: "/pages/login/login" |
| | | }); |
| | | }, 1000); |
| | | } else { |
| | | uni.showToast({ |
| | | title: msg, |
| | | icon: "none", |
| | | position: 'top' |
| | | }) |
| | | } |
| | | |
| | | |
| | | }, |
| | | async complete() { |
| | | |
| | | let that = this |
| | | if (that.barcode === '' || that.barcode === null) { |
| | | uni.showToast({ |
| | | title: "容器号为空", |
| | | icon: "error", |
| | | }) |
| | | return; |
| | | } |
| | | if (that.list === [] || that.list.length === 0) { |
| | | uni.showToast({ |
| | | title: "任务明细为空", |
| | | icon: "error", |
| | | }) |
| | | return; |
| | | } |
| | | this.repeatClick = true |
| | | const { |
| | | code, |
| | | data, |
| | | msg |
| | | } = await request('/saveCheckDiff', { |
| | | container: that.barcode, |
| | | checkId: that.check.id, |
| | | checkDiffItems: that.list |
| | | }) |
| | | if (code === 200) { |
| | | uni.showToast({ |
| | | title: msg, |
| | | icon: "none", |
| | | }) |
| | | that.clear() |
| | | } else { |
| | | uni.showToast({ |
| | | title: msg, |
| | | icon: "none", |
| | | }) |
| | | } |
| | | this.repeatClick = false |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style> |
| | | .index { |
| | | border: 1px solid #e54d42; |
| | | color: #e54d42; |
| | | border-radius: 50%; |
| | | display: block; |
| | | width: 50rpx; |
| | | height: 50rpx; |
| | | line-height: 48rpx; |
| | | text-align: center; |
| | | margin-right: 20rpx; |
| | | font-size: 30rpx; |
| | | } |
| | | |
| | | .text-blue { |
| | | color: #0081ff !important; |
| | | |
| | | } |
| | | |
| | | .item { |
| | | position: relative; |
| | | display: flex; |
| | | min-height: 80upx; |
| | | align-items: center; |
| | | } |
| | | |
| | | .content2 { |
| | | /* background-color: coral; */ |
| | | width: 100%; |
| | | display: flex; |
| | | flex-direction: row; |
| | | align-items: center; |
| | | justify-content: flex-end; |
| | | margin-right: 10px; |
| | | color: #0081ff; |
| | | } |
| | | |
| | | .noMargin { |
| | | margin-top: 0px; |
| | | padding: 5px; |
| | | } |
| | | </style> |