| <template> | 
|     <view class="rework"> | 
|         <view class="rework_list"> | 
|             <view class="rework_list_item"> | 
|                 <text><b>*</b>单据类型</text> | 
|                 <view class="rework_list_item_right" @click="typeShow = true"> | 
|                     <text :class="form.typeName ? 'black' : ''">{{form.typeName ? form.typeName : '请选择'}}</text> | 
|                     <u-icon name="arrow-right"></u-icon> | 
|                 </view> | 
|             </view> | 
|             <view class="rework_list_item"> | 
|                 <text><b>*</b>入库仓库</text> | 
|                 <view class="rework_list_item_right" @click="warehouseShow = true"> | 
|                     <text :class="form.warehouseName ? 'black' : ''">{{form.warehouseName ? form.warehouseName : '请选择'}}</text> | 
|                     <u-icon name="arrow-right"></u-icon> | 
|                 </view> | 
|             </view> | 
|         </view> | 
|         <view class="rework_qd"> | 
|             <view class="rework_qd_title"> | 
|                 <view class="rework_qd_title_left"> | 
|                     <view class="x"></view> | 
|                     <text>入库物料清单</text> | 
|                 </view> | 
|                 <view class="rework_qd_title_right" @click="addItem()"> | 
|                     <image src="@/static/gongdan_ic_shoudong@2x.png" mode="widthFix"></image> | 
|                     <text>增加入库</text> | 
|                 </view> | 
|             </view> | 
|             <u-swipe-action :autoClose="true"> | 
|                 <u-swipe-action-item v-for="(item, index) in list" :key="index" @click="dele($event, index)" :options="item.options"> | 
|                     <view class="rework_qd_list"> | 
|                         <view class="rework_qd_item" @click="openL(index)"> | 
|                             <text><b>*</b>入库货位</text> | 
|                             <view class="rework_qd_item_right"> | 
|                                 <text :class="item.locationName ? 'black' : ''">{{item.locationName ? item.locationName : '请选择'}}</text> | 
|                                 <u-icon name="arrow-right"></u-icon> | 
|                             </view> | 
|                         </view> | 
|                         <view class="rework_qd_item" @click="openMaterial(index)"> | 
|                             <text><b>*</b>入库物料</text> | 
|                             <view class="rework_qd_item_right"> | 
|                                 <text :class="item.materialName ? 'black' : ''">{{item.materialName ? item.materialName : '请选择'}}</text> | 
|                                 <u-icon name="arrow-right"></u-icon> | 
|                             </view> | 
|                         </view> | 
|                         <template v-if="form.type !== 25"> | 
|                             <view class="rework_qd_item" @click="openGX(index)"> | 
|                                 <text>生产工序</text> | 
|                                 <view class="rework_qd_item_right"> | 
|                                     <text :class="item.procedureName ? 'black' : ''">{{item.procedureName ? item.procedureName : '请选择'}}</text> | 
|                                     <u-icon name="arrow-right"></u-icon> | 
|                                 </view> | 
|                             </view> | 
|                         </template> | 
|                         <view class="rework_qd_item" @click="openQ(index)"> | 
|                             <text><b>*</b>质量属性</text> | 
|                             <view class="rework_qd_item_right"> | 
|                                 <text :class="item.qualityTypeName ? 'black' : ''">{{item.qualityTypeName ? item.qualityTypeName : '请选择'}}</text> | 
|                                 <u-icon name="arrow-right"></u-icon> | 
|                             </view> | 
|                         </view> | 
|                         <view class="rework_qd_item"> | 
|                             <text>批次号</text> | 
|                             <view class="rework_qd_item_right"> | 
|                                 <u--input placeholder="请输入" inputAlign="right" :customStyle="{width: '230rpx'}" border="surround" v-model="item.batch"></u--input> | 
|                             </view> | 
|                         </view> | 
|                         <view class="rework_qd_item"> | 
|                             <text><b>*</b>入库数量<template v-if="item.unitName">({{ item.unitName }})</template></text> | 
|                             <view class="rework_qd_item_right"> | 
|                                 <u--input placeholder="0" inputAlign="right" :customStyle="{width: '230rpx'}" border="surround" v-model="item.num"></u--input> | 
|                             </view> | 
|                         </view> | 
|                     </view> | 
|                 </u-swipe-action-item> | 
|             </u-swipe-action> | 
|         </view> | 
|         <view class="rework_zw"></view> | 
|         <!-- 底部操作按钮 --> | 
|         <view class="rework_footer"> | 
|             <button class="rework_footer_submit" @click="onConfirm()">提交</button> | 
|         </view> | 
|         <u-toast ref="uToast"></u-toast> | 
|         <!-- 仓库 --> | 
|         <Warehouse :show="warehouseShow" @close="close" @value="getValue" /> | 
|         <!-- 物料 --> | 
|         <Material :show="materialsShow" @close="close1" @value="getValue1" /> | 
|         <!-- 货位 --> | 
|         <location :show="locationShow" :list="locationList" @close="close3" @value="getValue3" /> | 
|         <!-- 工序 --> | 
|         <ProductionProcess :show="productionShow" :list="productionList" @close="productionShow = false" @value="getValue4" /> | 
|         <!-- 单据类型 --> | 
|         <u-picker :show="typeShow" keyName="name" :columns="typeList" @confirm="confirm" @cancel="typeClose"></u-picker> | 
|         <!-- 质量属性 --> | 
|         <u-picker :show="qualityShow" :columns="columns" @cancel="qualityShow = false" keyName="name" @confirm="onConfirm1"></u-picker> | 
|     </view> | 
| </template> | 
|   | 
| <script> | 
|     import Warehouse from '../../components/Warehouse.vue' | 
|     import location from '../../components/location.vue' | 
|     import Material from '../../components/Material.vue' | 
|     import ProductionProcess from '../../components/ProductionProcess.vue' | 
|     import { getListByWarehouseId, wOutBoundForStockUp } from '@/util/api/WorkOrderAPI' | 
|     import { getListByMaterialId } from '@/util/api/ExWarehouse' | 
|     export default { | 
|         components: { Warehouse, location, Material, ProductionProcess }, | 
|         data() { | 
|             return { | 
|                 i: 0, | 
|                 form: { | 
|                     warehouseName: '', | 
|                     warehouseId: '', | 
|                     type: '', | 
|                     typeName: '' | 
|                 }, | 
|                 locationList: [], | 
|                 productionList: [], | 
|                 columns: [ | 
|                     [ | 
|                         { name: '合格', id: '0' }, | 
|                         { name: '不良', id: '1' }, | 
|                         { name: '报废', id: '2' } | 
|                     ] | 
|                 ], | 
|                 list: [ | 
|                     { | 
|                         batch: '', | 
|                         locationId: '', | 
|                         locationIdLabel: '', | 
|                         locationName: '', | 
|                         materialId: '', | 
|                         materialName: '', | 
|                         num: '', | 
|                         hasBom: '', | 
|                         procedureId: '', | 
|                         procedureName: '', | 
|                         qualityType: '', | 
|                         qualityTypeName: '', | 
|                         unitId: '', | 
|                         unitName: '', | 
|                         options: [ | 
|                             { | 
|                                 text: '删除', | 
|                                 style: { | 
|                                     backgroundColor: '#f56c6c' | 
|                                 } | 
|                             } | 
|                         ] | 
|                     } | 
|                 ], | 
|                 typeList: [[{name: '采购入库', id: 25}, {name: '库存调整', id: 28}]], | 
|                 warehouseShow: false, | 
|                 typeShow: false, | 
|                 locationShow: false, | 
|                 materialsShow: false, | 
|                 productionShow: false, | 
|                 qualityShow: false | 
|             }; | 
|         }, | 
|         methods: { | 
|             dele(e, index) { | 
|                 if (this.list.length === 1) return uni.showToast({ title: '请选择单据类型', icon: 'none', duration: 2000 }); | 
|                 this.list.splice(index, 1) | 
|             }, | 
|             // 选择工序 | 
|             getValue4(item) { | 
|                 this.list[this.i].procedureId = item.id | 
|                 this.list[this.i].procedureName = item.name | 
|                 this.productionShow = false | 
|             }, | 
|             // 提交 | 
|             onConfirm() { | 
|                 if (!this.form.type) return uni.showToast({ title: '请选择单据类型', icon: 'none', duration: 2000 }); | 
|                 if (!this.form.warehouseId) return uni.showToast({ title: '请选择入库仓库', icon: 'none', duration: 2000 }); | 
|                 if (this.list.length === 0) return uni.showToast({ title: '请先添加入库物料', icon: 'none', duration: 2000 }); | 
|                 for (let i = 0; i < this.list.length; i++) { | 
|                     if (!this.list[i].locationId) return uni.showToast({ title: `第${i+1}项入库货位不能为空`, icon: 'none', duration: 2000 }); | 
|                     if (!this.list[i].materialId) return uni.showToast({ title: `第${i+1}项入库物料不能为空`, icon: 'none', duration: 2000 }); | 
|                     if (!this.list[i].qualityType) return uni.showToast({ title: `第${i+1}项质量属性不能为空`, icon: 'none', duration: 2000 }); | 
|                     if (!this.list[i].batch) return uni.showToast({ title: `第${i+1}项批次号不能为空`, icon: 'none', duration: 2000 }); | 
|                     if (this.list[i].num <= 0) { | 
|                         return uni.showToast({ title: `第${i + 1}项入库数量必须大于0`, icon: 'none', duration: 2000 }); | 
|                     } | 
|                 } | 
|                 wOutBoundForStockUp({ | 
|                     type: this.form.type, | 
|                     planDate: this.getDay(), | 
|                     validDate: this.getDay(), | 
|                     warehouseId: this.form.warehouseId, | 
|                     woutboundInBodyBeanList: this.list | 
|                 }).then(res => { | 
|                     if (res.code === 200) { | 
|                         uni.showToast({ title: '入库成功', icon: 'success', duration: 2000 }); | 
|                         setTimeout(() => { | 
|                             uni.navigateBack({ delta: 1 }); | 
|                         }, 2000) | 
|                     } | 
|                 }) | 
|             }, | 
|             // 获取当天年月日 | 
|             getDay() { | 
|                 var date = new Date(); | 
|                 var year = date.getFullYear(); | 
|                 var month = date.getMonth() + 1; | 
|                 var day = date.getDate(); | 
|                 return `${year}-${month <= 9 ? `0${month}` : month}-${day <= 9 ? `0${day}` : day}` | 
|             }, | 
|             // 打开选择物料 | 
|             openQ(index) { | 
|                 if (this.list[index].locationIdLabel == 'APPLIANCE_ONTEST' || this.list[index].locationIdLabel == 'APPLIANCE_OFFTEST' || this.list[index].locationIdLabel == 'APPLIANCE_USELESS') { | 
|                     return | 
|                 } | 
|                 this.i = index | 
|                 this.qualityShow = true | 
|             }, | 
|             // 打开工序 | 
|             openGX(index) { | 
|                 if (!this.list[index].materialId) return uni.showToast({ title: '请先选择入库物料', icon: 'none', duration: 2000 }); | 
|                 this.i = index | 
|                 this.productionShow = true | 
|             }, | 
|             // 打开选择货位 | 
|             openL(index) { | 
|                 if (!this.form.warehouseId) return uni.showToast({ title: '请选择入库仓库', icon: 'none', duration: 2000 }); | 
|                 this.i = index | 
|                 this.locationShow = true | 
|             }, | 
|             // 打开选择物料 | 
|             openMaterial(index) { | 
|                 this.i = index | 
|                 this.materialsShow = true | 
|             }, | 
|             // 质量属性确认 | 
|             onConfirm1(value) { | 
|                 this.list[this.i].qualityType = value.value[0].id | 
|                 this.list[this.i].qualityTypeName = value.value[0].name | 
|                 this.qualityShow = false | 
|             }, | 
|             // 选择物料 | 
|             getValue1(item) { | 
|                 this.list[this.i].materialName = item.mmodelUnionName | 
|                 this.list[this.i].materialId = item.id | 
|                 this.list[this.i].unitId = item.unitId | 
|                 this.list[this.i].hasBom = item.hasBom | 
|                 this.list[this.i].unitName = item.umodelName | 
|                 // 获取物料下工序 | 
|                 getListByMaterialId({ | 
|                     materialId: item.id | 
|                 }).then(res => { | 
|                     if (res.code === 200) { | 
|                         this.productionList = res.data | 
|                         this.list[this.i].procedureId = '' | 
|                         this.list[this.i].procedureName = '' | 
|                     } | 
|                 }) | 
|                 this.materialsShow = false | 
|             }, | 
|             // 关闭仓库选择弹框 | 
|             close1() { | 
|                 this.materialsShow = false | 
|             }, | 
|             // 选择货位 | 
|             getValue3(item) { | 
|                 this.list[this.i].locationId = item.id | 
|                 this.list[this.i].locationName = item.unionName | 
|                 this.list[this.i].qualityType = '' | 
|                 this.list[this.i].qualityTypeName = '' | 
|                 this.list[this.i].locationIdLabel = item.label | 
|                 if (item.label === 'APPLIANCE_ONTEST') { | 
|                     this.list[this.i].qualityType = '0' | 
|                     this.list[this.i].qualityTypeName = '合格' | 
|                 } else if (item.label === 'APPLIANCE_OFFTEST') { | 
|                     this.list[this.i].qualityType = '1' | 
|                     this.list[this.i].qualityTypeName = '不良' | 
|                 } else if (item.label === 'APPLIANCE_USELESS') { | 
|                     this.list[this.i].qualityType = '2' | 
|                     this.list[this.i].qualityTypeName = '报废' | 
|                 } | 
|                 this.locationShow = false | 
|             }, | 
|             // 关闭货位选择弹框 | 
|             close3() { | 
|                 this.locationShow = false | 
|             }, | 
|             // 确认单据类型 | 
|             confirm(val) { | 
|                 this.form.type = val.value[0].id | 
|                 this.form.typeName = val.value[0].name | 
|                 if (val.value[0].id == 25) { | 
|                     this.list.forEach(item => { | 
|                         item.procedureId = '' | 
|                         item.procedureName = '' | 
|                     }) | 
|                 } | 
|                 this.typeShow = false | 
|             }, | 
|             // 仓库确认 | 
|             getValue(val) { | 
|                 this.form.warehouseName = val.name | 
|                 this.form.warehouseId = val.id | 
|                 getListByWarehouseId({ wareHouseId: val.id }) | 
|                     .then(res => { | 
|                         if (res.code === 200) { | 
|                             this.locationList = res.data | 
|                             if (res.data.length === 1) { | 
|                                 this.location = false | 
|                                 this.list.forEach(item => { | 
|                                     item.locationId = res.data[0].id | 
|                                     item.locationName = res.data[0].unionName | 
|                                 }) | 
|                                 this.list[this.i].locationIdLabel = res.data[0].label | 
|                                 if (res.data[0].label === 'APPLIANCE_ONTEST') { | 
|                                     this.list[this.i].qualityType = '0' | 
|                                     this.list[this.i].qualityTypeName = '合格' | 
|                                 } else if (res.data[0].label === 'APPLIANCE_OFFTEST') { | 
|                                     this.list[this.i].qualityType = '1' | 
|                                     this.list[this.i].qualityTypeName = '不良' | 
|                                 } else if (res.data[0].label === 'APPLIANCE_USELESS') { | 
|                                     this.list[this.i].qualityType = '2' | 
|                                     this.list[this.i].qualityTypeName = '报废' | 
|                                 } | 
|                             } else { | 
|                                 this.location = true | 
|                                 this.list.forEach(item => { | 
|                                     item.locationId = res.data[0].id | 
|                                     item.locationName = res.data[0].unionName | 
|                                 }) | 
|                             } | 
|                         } | 
|                     }) | 
|                 this.warehouseShow = false | 
|             }, | 
|             typeClose() { | 
|                 this.typeShow = false | 
|             }, | 
|             close() { | 
|                 this.warehouseShow = false | 
|             }, | 
|             // 添加明细 | 
|             addItem() { | 
|                 if (!this.form.warehouseId) return this.$refs.uToast.show({ type: 'default', message: "请选择入库仓库" }) | 
|                 this.list.unshift({ | 
|                     batch: '', | 
|                     locationId: this.list[this.list.length - 1].locationId, | 
|                     locationName: this.list[this.list.length - 1].locationName, | 
|                     locationIdLabel: this.list[this.list.length - 1].locationIdLabel, | 
|                     materialId: '', | 
|                     materialName: '', | 
|                     num: '', | 
|                     hasBom: '', | 
|                     procedureId: '', | 
|                     procedureName: '', | 
|                     qualityType: this.list[this.list.length - 1].qualityType, | 
|                     qualityTypeName: this.list[this.list.length - 1].qualityTypeName, | 
|                     unitId: '', | 
|                     unitName: '', | 
|                     options: [ | 
|                         { | 
|                             text: '删除', | 
|                             style: { | 
|                                 backgroundColor: '#f56c6c' | 
|                             } | 
|                         } | 
|                     ] | 
|                 }) | 
|             } | 
|         } | 
|     } | 
| </script> | 
| <style> | 
|     .u-swipe-action-item__right { | 
|         z-index: 9; | 
|     } | 
| </style> | 
| <style lang="scss" scoped> | 
|     .rework { | 
|         width: 100%; | 
|         min-height: 100vh; | 
|         background-color: #F7F7F7; | 
|         .rework_list { | 
|             display: flex; | 
|             flex-direction: column; | 
|             background: #ffffff; | 
|             padding: 0 30rpx; | 
|             box-sizing: border-box; | 
|             .rework_list_item { | 
|                 display: flex; | 
|                 align-items: center; | 
|                 justify-content: space-between; | 
|                 height: 98rpx; | 
|                 border-bottom: 1rrpx solid #E5E5E5; | 
|                 &:last-child { | 
|                     border: none; | 
|                 } | 
|                 text { | 
|                     font-size: 30rpx; | 
|                     font-weight: 400; | 
|                     color: #222222; | 
|                     flex-shrink: 0; | 
|                     b { | 
|                         font-size: 30rpx; | 
|                         color: red; | 
|                         margin-right: 5rpx; | 
|                     } | 
|                 } | 
|                 .rework_list_item_right { | 
|                     flex: 1; | 
|                     display: flex; | 
|                     align-items: center; | 
|                     justify-content: flex-end; | 
|                     text { | 
|                         font-size: 28rpx; | 
|                         font-weight: 400; | 
|                         color: #999999; | 
|                     } | 
|                     .black { | 
|                         color: black !important; | 
|                     } | 
|                     input { | 
|                         width: 230rpx; | 
|                         height: 60rpx; | 
|                         font-size: 28rpx; | 
|                         border-radius: 8rpx; | 
|                         padding: 0 30rpx; | 
|                         text-align: right; | 
|                         box-sizing: border-box; | 
|                         border: 1rpx solid #CCCCCC; | 
|                     } | 
|                     input::-webkit-input-placeholder { | 
|                         font-size: 28rpx; | 
|                         font-weight: 400; | 
|                         color: #B2B2B2; | 
|                     } | 
|                 } | 
|             } | 
|         } | 
|         .rework_qd { | 
|             margin-top: 40rpx; | 
|             width: 100%; | 
|             background: #F7F7F7; | 
|             .rework_qd_title { | 
|                 display: flex; | 
|                 align-items: center; | 
|                 justify-content: space-between; | 
|                 padding: 0 30rpx 30rpx 30rpx; | 
|                 .rework_qd_title_left { | 
|                     display: flex; | 
|                     align-items: center; | 
|                     text { | 
|                         font-size: 32rpx; | 
|                         font-weight: 500; | 
|                         color: #222222; | 
|                     } | 
|                     .x { | 
|                         width: 8rpx; | 
|                         height: 30rpx; | 
|                         background: #4275FC; | 
|                         border-radius: 2rpx; | 
|                         margin-right: 12rpx; | 
|                     } | 
|                 } | 
|                 .rework_qd_title_right { | 
|                     display: flex; | 
|                     align-items: center; | 
|                     image { | 
|                         width: 28rpx; | 
|                         height: 28rpx; | 
|                         margin-right: 12rpx; | 
|                     } | 
|                     text { | 
|                         font-size: 28rpx; | 
|                         font-family: PingFangSC-Regular, PingFang SC; | 
|                         font-weight: 400; | 
|                         color: #4275FC; | 
|                     } | 
|                 } | 
|             } | 
|             .rework_qd_list { | 
|                 display: flex; | 
|                 flex-direction: column; | 
|                 padding: 0 30rpx; | 
|                 background: #FFFFFF; | 
|                 box-sizing: border-box; | 
|                 margin-bottom: 30rpx; | 
|                 .rework_qd_item { | 
|                     display: flex; | 
|                     align-items: center; | 
|                     justify-content: space-between; | 
|                     height: 98rpx; | 
|                     border-bottom: 1rpx solid #E5E5E5; | 
|                     &:last-child { | 
|                         border: none; | 
|                     } | 
|                     text { | 
|                         font-size: 30rpx; | 
|                         font-weight: 400; | 
|                         color: #222222; | 
|                         flex-shrink: 0; | 
|                         b { | 
|                             font-size: 30rpx; | 
|                             color: red; | 
|                             margin-right: 5rpx; | 
|                         } | 
|                     } | 
|                     .rework_qd_item_right { | 
|                         display: flex; | 
|                         align-items: center; | 
|                         text { | 
|                             font-size: 28rpx; | 
|                             font-weight: 400; | 
|                             color: #999999; | 
|                         } | 
|                         .black { | 
|                             color: black !important; | 
|                         } | 
|                         input { | 
|                             width: 230rpx; | 
|                             height: 60rpx; | 
|                             font-size: 28rpx; | 
|                             border-radius: 8rpx; | 
|                             padding: 0 30rpx; | 
|                             text-align: right; | 
|                             box-sizing: border-box; | 
|                             border: 1rpx solid #CCCCCC; | 
|                         } | 
|                         input::-webkit-input-placeholder { /* WebKit browsers */ | 
|                             font-size: 28rpx; | 
|                             font-weight: 400; | 
|                             color: #B2B2B2; | 
|                         } | 
|                     } | 
|                 } | 
|             } | 
|         } | 
|         .rework_zw { | 
|             height: 168rpx; | 
|         } | 
|         .rework_footer { | 
|             width: calc(100% - 60rpx); | 
|             position: fixed; | 
|             bottom: 0; | 
|             display: flex; | 
|             align-items: center; | 
|             justify-content: space-between; | 
|             padding: 0 30rpx 68rpx 30rpx; | 
|             .rework_footer_add { | 
|                 flex: 1; | 
|                 height: 88rpx; | 
|                 font-size: 30rpx; | 
|                 font-weight: 500; | 
|                 color: $nav-color; | 
|                 background: #FFFFFF; | 
|                 box-shadow: 0 0 12rpx 0 rgba(0,0,0,0.0800); | 
|                 border-radius: 8rpx; | 
|                 display: flex; | 
|                 align-items: center; | 
|                 justify-content: center; | 
|             } | 
|             .rework_footer_submit { | 
|                 flex: 1; | 
|                 height: 88rpx; | 
|                 font-size: 30rpx; | 
|                 font-weight: 500; | 
|                 color: #ffffff; | 
|                 background: $nav-color; | 
|                 box-shadow: 0 0 12rpx 0 rgba(0,0,0,0.0800); | 
|                 border-radius: 8rpx; | 
|                 display: flex; | 
|                 align-items: center; | 
|                 justify-content: center; | 
|                 border: none; | 
|             } | 
|         } | 
|     } | 
| </style> |