| <template>  | 
|     <view class="has-foot">  | 
|         <view>  | 
|             <form>  | 
|                 <view class="cu-form-group ">  | 
|                     <view class="title">容器号</view>  | 
|                     <input placeholder="请扫描容器号" v-model="container" focus></input>  | 
|                     <text class='cuIcon-search text-blue' @click="getList"></text>  | 
|                 </view>  | 
|                 <view class="cu-form-group">  | 
|                     <view class="title">编码</view>  | 
|                     <input placeholder="请扫描组托档编码" v-model="pkCode"></input>  | 
|                     <text class='cuIcon-search text-blue' @click="getList"></text>  | 
|                 </view>  | 
|             </form>  | 
|             <view class="flex solid-bottom padding-sm justify-between">  | 
|                 <view class="text-blue">物料总类:{{list.length}}</view>  | 
|                 <view class="text-blue">组盘总数:{{allCount}}</view>  | 
|             </view>  | 
|         </view>  | 
|         <view class="padding-lr margin-top-sm">  | 
|             <block v-for="(item, index) in list" :key="index">  | 
|                 <view class="cu-list det menu sm-border margin-bottom-sm " :class="[item.trackCode===barcode&&'act']"  | 
|                     :ref="item.trackCode+'ref'">  | 
|                     <view class="cu-bar bg-white solid-bottom ">  | 
|                         <view class="action">  | 
|                             <view class="index">  | 
|                                 {{index+1}}  | 
|                             </view>  | 
|                             <view class="text-blue">  | 
|                                 编码:  | 
|                                 {{`${item.matnrCode}`}}  | 
|                             </view>  | 
|                         </view>  | 
|                         <view class="action" v-if="!isconfirm">  | 
|                             <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-black">物料编码:</text>  | 
|                             <text class="text-grey ">{{item.maktx}}</text>  | 
|                         </view>  | 
|                     </view>  | 
|                     <view class="cu-item">  | 
|                         <view class="content">  | 
|                             <text class="text-black">ASN:</text>  | 
|                             <text class="text-grey ">{{item.asnCode}}</text>  | 
|                         </view>                          | 
|                     </view>  | 
|                       | 
|                     <view class="cu-item">  | 
|                         <view class="content">  | 
|                             <text class="text-black">批次:</text>  | 
|                             <text class="text-grey ">{{item.batch}}</text>  | 
|                         </view>                                              | 
|                     </view>  | 
|                     <view class="cu-item">                          | 
|                         <view class="content">  | 
|                             <text class="text-black">质检状态:</text>  | 
|                             <text class="text-grey ">{{item.isptResult$}}</text>  | 
|                         </view>                          | 
|                     </view>  | 
|                     <view class="cu-item">  | 
|                         <view class="content">  | 
|                             <text class="text-black">库存单位: <text class="text-grey ">{{item.stockUnit}}</text></text>  | 
|                         </view>  | 
|                     </view>      | 
|                     <view class="cu-item">  | 
|   | 
|                         <view class="content">  | 
|                             <text class="text-black">已组托数: <text class="text-grey ">{{item.anfme}}</text></text>  | 
|                         </view>  | 
|                         <view class="content">  | 
|                             <text class="text-black">已执行数量: <text class="text-grey ">{{item.workQty}}</text></text>  | 
|                         </view>  | 
|                     </view>  | 
|                     <view class="cu-item">  | 
|                         <view class="content">  | 
|                             <text class="text-black">可解绑数量: <text  | 
|                                     class="text-grey ">{{item.anfme - item.workQty}}</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.receiptQty"  | 
|                                     :step='1'></uni-number-box>  | 
|                             </view>  | 
|                         </view>  | 
|                     </view>  | 
|                 </view>  | 
|             </block>  | 
|         </view>  | 
|         <view class="cu-bar btn-group foot">  | 
|             <button class="cu-btn text-blue line-blue shadow" @click="clear">清空</button>  | 
|             <button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">解绑</button>  | 
|         </view>  | 
|     </view>  | 
| </template>  | 
|   | 
| <script>  | 
|     import {  | 
|         request  | 
|     } from '../../common/request.js'  | 
|     import {  | 
|         mapState,  | 
|         mapMutations,  | 
|         mapActions,  | 
|         mapGetters  | 
|     } from 'vuex';  | 
|     export default {  | 
|         data() {  | 
|             return {  | 
|                 barcode: '',  | 
|                 container: '',  | 
|                 megreQty: '',  | 
|                 list: [],  | 
|                 range: [],  | 
|                 asnCode: '',  | 
|                 repeatClick: false,  | 
|                 isconfirm: false,  | 
|                 matnrCode: '',  | 
|                 max: 99999999,  | 
|                 pkCode: '',  | 
|             }  | 
|         },  | 
|         computed: {  | 
|             ...mapState('user', ['dynamicFields']),  | 
|             allCount() {  | 
|                 return this.list.reduce((acc, row) => +row.anfme + acc, 0) || 0  | 
|             }  | 
|         },  | 
|         mounted() {},  | 
|         methods: {  | 
|             async search() {  | 
|                 const find = this.list.find(el => el.trackCode === this.barcode);  | 
|                 find ? this.scrollTo() : this.getDet();  | 
|   | 
|             },  | 
|             async getDet() {  | 
|                 const {  | 
|                     code,  | 
|                     data,  | 
|                     msg  | 
|                 } = await request('/asnOrderItem/trackCode', {  | 
|                     matnrCode: this.matnrCode,  | 
|                     asnCode: this.asnCode  | 
|                 }, "post")  | 
|                 if (code === 200) {                      | 
|                     for (var i = 0; i < data.length; i++) {  | 
|                         data[i].receiptQty = 0;  | 
|                         data[i].selected = false;  | 
|                     }  | 
|                     this.list = data  | 
|                 } else {  | 
|                     uni.showToast({  | 
|                         title: msg,  | 
|                         icon: "none",  | 
|                         position: 'top'  | 
|                     })  | 
|                 }  | 
|             },  | 
|             async getList() {  | 
|                 const {  | 
|                     code,  | 
|                     data,  | 
|                     msg  | 
|                 } = await request('/asnOrderItem/container', {  | 
|                     barcode: this.container,  | 
|                     code: this.pkCode,  | 
|                     type: 'unbind'  | 
|                 })  | 
|                 if (code === 200) {  | 
|                     for (var i = 0; i < data.length; i++) {  | 
|                         data[i].receiptQty = 0;                          | 
|                     }  | 
|                     this.list = data  | 
|                 } else {  | 
|                     uni.showToast({  | 
|                         title: msg,  | 
|                         icon: "none",  | 
|                         position: 'top'  | 
|                     })  | 
|                 }  | 
|             },  | 
|             scrollTo() {  | 
|                 const ref = this.$refs[`${this.barcode}ref`][0];  | 
|                 uni.pageScrollTo({  | 
|                     scrollTop: ref.$el.offsetTop,  | 
|                     duration: 300  | 
|                 })  | 
|             },  | 
|             remove(index) {  | 
|                 this.list.splice(index, 1);  | 
|             },  | 
|             clear() {  | 
|                 this.list = []  | 
|                 this.barcode = ''  | 
|             },  | 
|             next() {  | 
|                 if (this.list.length) {  | 
|                     this.isconfirm = true  | 
|                 } else {  | 
|                     uni.showToast({  | 
|                         icon: "none",  | 
|                         title: '未选物料标签'  | 
|                     })  | 
|                 }  | 
|             },  | 
|             prev() {  | 
|                 this.isconfirm = false  | 
|             },  | 
|             async confirm() {  | 
|                 this.repeatClick = true  | 
|                 const newArr = this.list.map(item => {  | 
|   | 
|                     return {  | 
|                         ...item, | 
|                         extendFields: {},  | 
|                         anfme: item.anfme === null ? 0 : +item.anfme,  | 
|                     };  | 
|                 });  | 
|   | 
|                 const {  | 
|                     code,  | 
|                     data,  | 
|                     msg  | 
|                 } = await request('/waitPakin/unbind', {  | 
|                     items: newArr,  | 
|                     barcode: this.container,  | 
|                 })  | 
|                 if (code === 200) {  | 
|                     uni.showToast({  | 
|                         title: '解绑成功'  | 
|                     })  | 
|                     this.list = []  | 
|                     this.barcode = ''  | 
|                     this.container = ''  | 
|                     this.isconfirm = false  | 
|                 } else {  | 
|                     uni.showToast({  | 
|                         title: msg,  | 
|                         icon: "none",  | 
|                         position: 'top'  | 
|                     })  | 
|                 }  | 
|                 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;  | 
|   | 
|     }  | 
|   | 
|     .act {  | 
|         border: 1px solid #e54d42;  | 
|     }  | 
|   | 
|     .item {  | 
|         position: relative;  | 
|         display: flex;  | 
|         min-height: 80upx;  | 
|         align-items: center;  | 
|     }  | 
| </style> |