|  |  |  | 
|---|
|  |  |  | <template> | 
|---|
|  |  |  | <view> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <view class="rework"> | 
|---|
|  |  |  | <view class="rework_list"> | 
|---|
|  |  |  | <view class="rework_list_item" @click="typeShow = true"> | 
|---|
|  |  |  | <text>单据类型<text style="color: #DE5243;">*</text></text> | 
|---|
|  |  |  | <view class="rework_list_item_right"> | 
|---|
|  |  |  | <text :class="form.typeName ? 'black' : ''">{{form.typeName ? form.typeName : '请选择'}}</text> | 
|---|
|  |  |  | <u-icon name="arrow-right" color="#999999"></u-icon> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="rework_list_item" @click="warehouseShow = true"> | 
|---|
|  |  |  | <text>出库仓库<text style="color: #DE5243;">*</text></text> | 
|---|
|  |  |  | <view class="rework_list_item_right"> | 
|---|
|  |  |  | <text :class="form.warehouseName ? 'black' : ''">{{form.warehouseName ? form.warehouseName : '请选择'}}</text> | 
|---|
|  |  |  | <u-icon name="arrow-right" color="#999999"></u-icon> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="rework_qd"> | 
|---|
|  |  |  | <view class="rework_qd_title"> | 
|---|
|  |  |  | <view class="rework_qd_title_left"> | 
|---|
|  |  |  | <view class="x"></view> | 
|---|
|  |  |  | <!-- ${list.length} --> | 
|---|
|  |  |  | <text>{{`出库物料清单`}}</text> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <!-- <view class="rework_qd_title_right" @click="openMs"> | 
|---|
|  |  |  | <image src="@/static/gongdan_ic_shoudong@2x.png" mode="widthFix" /> | 
|---|
|  |  |  | <text>增加出库</text> | 
|---|
|  |  |  | </view> --> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <van-swipe-cell v-for="(item, index) in list" :key="index"> | 
|---|
|  |  |  | <view class="rework_qd_item"> | 
|---|
|  |  |  | <image class="rework_qd_item_dele" @click="dele(index)" src="@/static/chuku_ic_delete@2x.png" mode="widthFix" /> | 
|---|
|  |  |  | <view class="rework_qd_item_wl"> | 
|---|
|  |  |  | <text>{{ item.materialName }} | {{ item.materialCode }}</text> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="rework_qd_item_cate"> | 
|---|
|  |  |  | <text class="green" v-if="item.qualityType === '0'">合格</text> | 
|---|
|  |  |  | <text class="yellow" v-if="item.qualityType === '1'">不良</text> | 
|---|
|  |  |  | <text class="red" v-if="item.qualityType === '2'">报废</text> | 
|---|
|  |  |  | <text> | {{ item.procedureName || '-' }} | </text> | 
|---|
|  |  |  | <text>{{ item.batch || '-' }}</text> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="rework_qd_item_hw"> | 
|---|
|  |  |  | <text>出库货位:{{ item.locationName }}</text> | 
|---|
|  |  |  | <view class="rework_qd_item_hw_right"> | 
|---|
|  |  |  | <text>数量:</text> | 
|---|
|  |  |  | <u--input :customStyle="{width: '180rpx'}" placeholder="0" border="surround" type="number" v-model="item.num" @input="changeNum(item)"></u--input> | 
|---|
|  |  |  | <text>{{ item.unitName }}</text> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </van-swipe-cell> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="rework_zw"></view> | 
|---|
|  |  |  | <view class="rework_footer"> | 
|---|
|  |  |  | <button class="rework_footer_add" @click="openMs">选择物料</button> | 
|---|
|  |  |  | <button class="rework_footer_submit" @click="onConfirm">提交</button> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <!-- 选择仓库 --> | 
|---|
|  |  |  | <Warehouse :show="warehouseShow" @close="close" @value="getValue" /> | 
|---|
|  |  |  | <!-- 选择物料 --> | 
|---|
|  |  |  | <SelectMultipleMaterial ref="SelectMultipleMaterial" /> | 
|---|
|  |  |  | <!-- 单据类型 --> | 
|---|
|  |  |  | <u-picker :show="typeShow" :columns="columns" @cancel="typeShow = false" @confirm="onConfirm1" keyName="name"></u-picker> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <script> | 
|---|
|  |  |  | import Warehouse from '../../components/Warehouse.vue' | 
|---|
|  |  |  | import SelectMultipleMaterial from '@/components/SelectMultipleMaterial.vue' | 
|---|
|  |  |  | export default { | 
|---|
|  |  |  | components: { Warehouse, SelectMultipleMaterial }, | 
|---|
|  |  |  | data() { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | form: { | 
|---|
|  |  |  | warehouseName: '', | 
|---|
|  |  |  | warehouseId: '', | 
|---|
|  |  |  | type: '', | 
|---|
|  |  |  | typeName: '' | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | columns: [ | 
|---|
|  |  |  | [ | 
|---|
|  |  |  | { name: '销售出库', id: 18 }, | 
|---|
|  |  |  | { name: '库存调整', id: 28 }, | 
|---|
|  |  |  | { name: '仓库报废', id: 21 } | 
|---|
|  |  |  | ] | 
|---|
|  |  |  | ], | 
|---|
|  |  |  | typeShow: false, | 
|---|
|  |  |  | warehouseShow: false, | 
|---|
|  |  |  | list: [] | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | methods: { | 
|---|
|  |  |  | changeNum(obj) { | 
|---|
|  |  |  | if (obj.num < 0) { | 
|---|
|  |  |  | obj.num = '' | 
|---|
|  |  |  | return uni.showToast({ title: '出库物料数量必须大于0', icon: 'none', duration: 2000 }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (obj.num > obj.total) { | 
|---|
|  |  |  | obj.num = '' | 
|---|
|  |  |  | return uni.showToast({ title: '出库物料数量不能大于库存数!', icon: 'none', duration: 2000 }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 选择仓库回调 | 
|---|
|  |  |  | getValue(item) { | 
|---|
|  |  |  | this.form.warehouseName = item.name | 
|---|
|  |  |  | this.form.warehouseId = item.id || 1 | 
|---|
|  |  |  | this.list = [] | 
|---|
|  |  |  | this.warehouseShow = false | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 单据类型确认 | 
|---|
|  |  |  | onConfirm1(value) { | 
|---|
|  |  |  | this.form.typeName = value.value[0].name | 
|---|
|  |  |  | this.form.type = value.value[0].id | 
|---|
|  |  |  | this.typeShow = false | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 关闭仓库选择弹框 | 
|---|
|  |  |  | close() { | 
|---|
|  |  |  | this.warehouseShow = false | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 删除 | 
|---|
|  |  |  | dele(index) { | 
|---|
|  |  |  | if (this.list.length === 1) { | 
|---|
|  |  |  | uni.showToast({ title: '至少保留一条物流清单信息!', icon: 'none', duration: 2000 }); | 
|---|
|  |  |  | return | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.list.splice(index, 1) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 打开选择物料 | 
|---|
|  |  |  | openMs() { | 
|---|
|  |  |  | if (!this.form.warehouseId) return uni.showToast({ title: '请先选择出库仓库', icon: 'none', duration: 2000 }); | 
|---|
|  |  |  | this.$refs.SelectMultipleMaterial.open({}) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 获取当天年月日 | 
|---|
|  |  |  | 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}` | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 提交 | 
|---|
|  |  |  | 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].num || this.list[i].num == '' || this.list[i].num <= 0) { | 
|---|
|  |  |  | return uni.showToast({ title: `第${i + 1}个出库物料数量必须大于0`, icon: 'none', duration: 2000 }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (this.list[i].num > this.list[i].total) { | 
|---|
|  |  |  | return uni.showToast({ title: `第${i + 1}个物料数量不能大于库存量!`, icon: 'none', duration: 2000 }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | createForStandard({ | 
|---|
|  |  |  | billType: this.form.type, | 
|---|
|  |  |  | planDate: this.getDay(), | 
|---|
|  |  |  | origin: 0, | 
|---|
|  |  |  | type: 0, | 
|---|
|  |  |  | warehouseId: this.form.warehouseId, | 
|---|
|  |  |  | woutBoundDetailBeans: this.list | 
|---|
|  |  |  | }).then(res => { | 
|---|
|  |  |  | if (res.code === 200) { | 
|---|
|  |  |  | uni.showToast({ title: '出库成功', icon: 'none', duration: 2000 }); | 
|---|
|  |  |  | setTimeout(() => { | 
|---|
|  |  |  | uni.navigateBack({ delta: 1 }); | 
|---|
|  |  |  | }, 2000) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <style lang="scss"> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <style lang="scss" scoped> | 
|---|
|  |  |  | .rework { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | .rework_list { | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | flex-direction: column; | 
|---|
|  |  |  | background: white; | 
|---|
|  |  |  | padding: 0 30rpx; | 
|---|
|  |  |  | box-sizing: border-box; | 
|---|
|  |  |  | .rework_list_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_list_item_right { | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | text { | 
|---|
|  |  |  | font-size: 28rpx; | 
|---|
|  |  |  | font-weight: 400; | 
|---|
|  |  |  | color: #999999; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .black { | 
|---|
|  |  |  | color: black !important; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | input { | 
|---|
|  |  |  | width: 230rpx; | 
|---|
|  |  |  | font-size: 28rpx; | 
|---|
|  |  |  | border: none; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | input::-webkit-input-placeholder { /* WebKit browsers */ | 
|---|
|  |  |  | font-size: 28rpx; | 
|---|
|  |  |  | font-weight: 400; | 
|---|
|  |  |  | color: #B2B2B2; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .rework_qd { | 
|---|
|  |  |  | margin-top: 40rpx; | 
|---|
|  |  |  | .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_item { | 
|---|
|  |  |  | background: #ffffff; | 
|---|
|  |  |  | padding: 30rpx; | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | flex-direction: column; | 
|---|
|  |  |  | margin-bottom: 30rpx; | 
|---|
|  |  |  | position: relative; | 
|---|
|  |  |  | .rework_qd_item_dele { | 
|---|
|  |  |  | position: absolute; | 
|---|
|  |  |  | right: 0; | 
|---|
|  |  |  | top: 0; | 
|---|
|  |  |  | width: 48rpx; | 
|---|
|  |  |  | height: 48rpx; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .rework_qd_item_wl { | 
|---|
|  |  |  | text { | 
|---|
|  |  |  | font-size: 30rpx; | 
|---|
|  |  |  | font-family: PingFangSC-Medium, PingFang SC; | 
|---|
|  |  |  | font-weight: 500; | 
|---|
|  |  |  | color: #222222; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .rework_qd_item_cate { | 
|---|
|  |  |  | margin-top: 18rpx; | 
|---|
|  |  |  | text { | 
|---|
|  |  |  | font-size: 24rpx; | 
|---|
|  |  |  | font-family: PingFangSC-Regular, PingFang SC; | 
|---|
|  |  |  | font-weight: 400; | 
|---|
|  |  |  | color: #666666; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .rework_qd_item_hw { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | justify-content: space-between; | 
|---|
|  |  |  | margin-top: 24rpx; | 
|---|
|  |  |  | text { | 
|---|
|  |  |  | font-size: 26rpx; | 
|---|
|  |  |  | font-family: PingFangSC-Regular, PingFang SC; | 
|---|
|  |  |  | font-weight: 400; | 
|---|
|  |  |  | color: #333333; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .rework_qd_item_hw_right { | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | text { | 
|---|
|  |  |  | font-size: 26rpx; | 
|---|
|  |  |  | font-family: PingFangSC-Regular, PingFang SC; | 
|---|
|  |  |  | font-weight: 400; | 
|---|
|  |  |  | color: #666666; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | input { | 
|---|
|  |  |  | width: 180rpx; | 
|---|
|  |  |  | height: 60rpx; | 
|---|
|  |  |  | font-size: 28rpx; | 
|---|
|  |  |  | font-family: PingFangSC-Regular, PingFang SC; | 
|---|
|  |  |  | font-weight: 400; | 
|---|
|  |  |  | color: #333333; | 
|---|
|  |  |  | background: #FFFFFF; | 
|---|
|  |  |  | border-radius: 8rpx; | 
|---|
|  |  |  | border: 1rpx solid #CCCCCC; | 
|---|
|  |  |  | margin: 0 20rpx; | 
|---|
|  |  |  | padding: 0 30rpx; | 
|---|
|  |  |  | box-sizing: border-box; | 
|---|
|  |  |  | text-align: right; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .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; | 
|---|
|  |  |  | margin-left: 22rpx; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </style> | 
|---|