<template>
|
<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>
|
<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"
|
:selected="list.map(item => item.id) || []"
|
:warehouseId="form.warehouseId.toString()"
|
:warehouseQualityType="form.warehouseQualityType"
|
@value="getValue1" />
|
<!-- 单据类型 -->
|
<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/multipleMaterial.vue'
|
import { createForStandard } from '@/util/api/WorkOrderAPI'
|
export default {
|
components: { Warehouse, SelectMultipleMaterial },
|
data() {
|
return {
|
form: {
|
warehouseName: '',
|
warehouseId: '',
|
warehouseQualityType: '',
|
type: '',
|
typeName: ''
|
},
|
columns: [
|
[
|
{ name: '销售出库', id: 18 },
|
{ name: '库存调整', id: 28 },
|
{ name: '仓库报废', id: 21 }
|
]
|
],
|
typeShow: false,
|
warehouseShow: false,
|
list: []
|
};
|
},
|
methods: {
|
// 选择物料
|
getValue1(item) {
|
item.forEach((row) => {
|
row.total = JSON.parse(JSON.stringify(row.num))
|
})
|
this.list = [...item, ...this.list]
|
},
|
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
|
this.form.warehouseQualityType = item.tmodel.label
|
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: 'success', duration: 2000 });
|
setTimeout(() => {
|
uni.navigateBack({ delta: 1 });
|
}, 2000)
|
}
|
})
|
}
|
}
|
}
|
</script>
|
|
<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>
|