<template>
|
<view class="tl">
|
<workOrderInfo :orederMessage="info" />
|
<div class="tl_title">
|
<div class="tl_title_left">
|
<div class="tl_title_left_x"></div>
|
<span>投料信息</span>
|
<!-- <span>{{total == 0 ? '' : total}}{{formList[formList.length - 1].dw ? formList[formList.length - 1].dw : ''}}</span> -->
|
<!-- <span>{{total == 0 ? '' : total}}{{formList[formList.length - 1].dw ? formList[formList.length - 1].dw : ''}}</span> -->
|
</div>
|
<div class="tl_title_right" @click="add">
|
<image src="../../static/gongdan_ic_shoudong@2x.png" class="add-img" mode=""></image>
|
<span>增加投料</span>
|
</div>
|
</div>
|
<u-swipe-action>
|
<u-swipe-action-item v-for="(item, index) in materialList" :key="index" :options="options"
|
@click="deleItem(index)">
|
<div class="tl_list">
|
<div class="tl_list_item" @click="open1(index)">
|
<div class="tl_list_item_label">选择物料</div>
|
<div class="tl_list_item_go" v-if="!item.materialName">
|
<span>点击跳转到物料列表</span>
|
<u-icon name="arrow-right"></u-icon>
|
</div>
|
<div class="tl_list_item_wl" v-else>
|
<div class="tl_list_item_wl_top">
|
<span>{{ item.materialName }}</span>
|
<span> | {{ item.materialCode }}</span>
|
</div>
|
<div class="tl_list_item_wl_bottom">
|
<span class="green" v-if="item.qualityType == 0">合格</span>
|
<span class="yellow" v-else-if="item.qualityType == 1">不良</span>
|
<span class="red" v-else-if="item.qualityType == 2">报废</span>
|
<span>{{ item.procedureName ? ` / ${item.procedureName}` : ' / -' }}</span>
|
<span>{{ item.locationName ? ` / ${item.locationName}` : ' / -' }}</span>
|
<span>{{ item.batch ? ` / ${item.batch}` : ' / -' }}</span>
|
</div>
|
</div>
|
</div>
|
<div class="tl_list_item">
|
<div class="tl_list_item_label">投料数量{{ item.unitAttribute }}</div>
|
<div class="tl_list_item_go">
|
<input type="text" @blur="changeNumber(item.num, index, item.unitAttribute)"
|
v-model="item.num" />
|
</div>
|
</div>
|
</div>
|
</u-swipe-action-item>
|
</u-swipe-action>
|
<view class="" style="height: 88rpx;"></view>
|
<u-safe-bottom></u-safe-bottom>
|
<div class="tl_footer">
|
<button class="tl_footer_submit" v-preventReClick @click="submit">提交</button>
|
</div>
|
<SelectMaterial ref="selectMaterial" @selectAction="getValue" />
|
<!-- <SelectMultipleMaterial ref="selectMultipleMaterial" @selected="getMaterails"/> -->
|
</view>
|
</template>
|
|
<script>
|
import workOrderInfo from '@/components/workOrderInfo.vue'
|
import SelectMaterial from '@/components/selectMaterial.vue'
|
// import SelectMultipleMaterial from '@/components/SelectMultipleMaterial.vue'
|
import {
|
queryById,
|
createMaterial,
|
createMaterialStandard
|
} from '@/util/api/WorkOrderAPI'
|
import {
|
positiveInteger,
|
number
|
} from '@/common/config'
|
export default {
|
components: {
|
workOrderInfo,
|
SelectMaterial,
|
// SelectMultipleMaterial
|
},
|
data() {
|
return {
|
deviceId: '',
|
workorderId: '',
|
// formList: [{
|
// id: Date.now(),
|
// toolingTypeId: '', // 工装类型
|
// toolingTypeName: '', // 工装类型名称
|
// workClothesId: '', // 工装
|
// workClothesName: '', // 工装名称
|
// num: '', // 数量
|
// attribute: '', // 工装属性
|
// attributeType: '', // 工装属性类型
|
// dw: '', // 物料单位
|
// unitAttribute: ''
|
// }],
|
info: {},
|
materialList: [{
|
id: '',
|
materialName: '',
|
materialCode: '',
|
qualityType: '',
|
procedureName: '',
|
locationName: '',
|
batch: '',
|
num: '',
|
unitAttribute: ''
|
}],
|
options: [{
|
text: '删除',
|
style: {
|
backgroundColor: 'red',
|
}
|
}],
|
};
|
},
|
onLoad(obj) {
|
this.workorderId = obj.id
|
queryById(this.workorderId)
|
.then(res => {
|
if (res.code === 200) {
|
this.info = res.data
|
this.deviceId = res.data.pgmodel.id
|
}
|
})
|
},
|
methods: {
|
open1(index) {
|
// this.$refs.selectMaterial.open({})
|
this.index = index
|
this.$refs.selectMaterial.open({
|
workorderId: this.workorderId,
|
deviceId: this.deviceId
|
})
|
},
|
deleItem(index) {
|
if (this.materialList.length === 1) {
|
uni.$u.toast('至少保留一条投料信息')
|
return
|
}
|
this.materialList.splice(index, 1)
|
},
|
add() {
|
this.total += 1
|
this.materialList.unshift({
|
id: '',
|
materialName: '',
|
materialCode: '',
|
qualityType: '',
|
procedureName: '',
|
locationName: '',
|
batch: '',
|
num: '',
|
unitAttribute: ''
|
})
|
},
|
changeNumber(num, index, unitAttribute) {
|
if (unitAttribute === 0 && num !== '') {
|
if (!positiveInteger.test(num)) {
|
uni.$u.toast({
|
message: '只能输入正整数'
|
})
|
this.materialList[index].num = ''
|
}
|
} else if (unitAttribute === 1 && num !== '') {
|
if (!number.test(num)) {
|
uni.$u.toast({
|
message: '只能输入正整数或小数(最多四位)'
|
})
|
this.materialList[index].num = ''
|
}
|
}
|
if (num <= 0) {
|
uni.$u.toast({
|
message: '投料数量不能小于等于0'
|
})
|
this.materialList[index].num = ''
|
}
|
},
|
getValue(item) {
|
for (let i = 0; i < this.materialList.length; i++) {
|
if (item.id === this.materialList[i].id) {
|
uni.$u.toast({
|
message: '不能重复选择相同物料'
|
})
|
return
|
}
|
}
|
this.materialList[this.index].id = item.id
|
this.materialList[this.index].materialName = item.materialName
|
this.materialList[this.index].num = item.num
|
this.materialList[this.index].batch = item.batch
|
this.materialList[this.index].locationName = item.locationName
|
this.materialList[this.index].materialCode = item.materialCode
|
this.materialList[this.index].procedureName = item.procedureName
|
this.materialList[this.index].qualityType = item.qualityType
|
this.materialList[this.index].unitAttribute = item.unitAttribute
|
},
|
submit() {
|
let temp = this.materialList.findIndex(item => !item.id || !item.num)
|
if (temp != -1) {
|
uni.$u.toast(`请先完善第${temp + 1}条投料信息`)
|
return
|
}
|
let total = this.materialList.reduce((accumulator, currentValue) => accumulator + Number(currentValue.num),
|
0)
|
console.log(total);
|
if (this.info.bomType != 1 && this.info.hasBom != 1) {
|
if (total > this.info.planNum) {
|
uni.$u.toast(`投料数量不能大于计划数量`)
|
return
|
}
|
}
|
let recordList = this.materialList.map(item => {
|
return {
|
wstockId: item.id,
|
num: item.num
|
}
|
})
|
createMaterialStandard({
|
id: this.workorderId,
|
recordList
|
}).then(res => {
|
if (res.code === 200) {
|
// Toast.success({ message: '投料成功', duration: 2000, forbidClick: true })
|
// setTimeout(() => {
|
// router.go(-1)
|
// }, 2000)
|
uni.$u.toast(`投料成功`)
|
uni.$emit('addMaterial')
|
uni.navigateBack()
|
}
|
})
|
}
|
}
|
}
|
</script>
|
|
<style lang="scss">
|
.tl {
|
width: 100%;
|
height: 100%;
|
position: absolute;
|
background: #F7F7F7;
|
|
.tl_title {
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
padding: 30rpx;
|
|
.tl_title_left {
|
display: flex;
|
align-items: center;
|
|
.tl_title_left_x {
|
width: 8rpx;
|
height: 30rpx;
|
background: $nav-color;
|
border-radius: 2rpx;
|
margin-right: 12rpx;
|
}
|
|
span {
|
font-size: 32rpx;
|
font-weight: 500;
|
color: #222222;
|
|
&:nth-child(3) {
|
font-size: 28rpx;
|
font-weight: 500;
|
color: $nav-color;
|
margin-left: 10rpx;
|
}
|
}
|
}
|
|
.tl_title_right {
|
display: flex;
|
align-items: center;
|
|
.add-img {
|
width: 28rpx;
|
height: 28rpx;
|
margin-right: 12rpx;
|
}
|
|
span {
|
font-size: 28rpx;
|
font-weight: 400;
|
// color: $nav-color;
|
}
|
}
|
}
|
|
.tl_list {
|
display: flex;
|
flex-direction: column;
|
background: white;
|
padding: 0 30rpx;
|
margin-bottom: 20rpx;
|
|
.tl_list_item {
|
min-height: 98rpx;
|
// padding: 20rpx 0;
|
box-sizing: border-box;
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
border-bottom: 1rpx solid #E5E5E5;
|
|
&:last-child {
|
border: none !important;
|
}
|
|
.tl_list_item_label {
|
font-size: 30rpx;
|
font-weight: 400;
|
color: #222222;
|
}
|
|
.tl_list_item_wl {
|
display: flex;
|
flex-direction: column;
|
align-items: end;
|
|
.tl_list_item_wl_top {
|
display: flex;
|
align-items: center;
|
|
span {
|
font-size: 28rpx;
|
color: #222222;
|
}
|
}
|
|
.tl_list_item_wl_bottom {
|
display: flex;
|
align-items: center;
|
|
span {
|
font-size: 28rpx;
|
color: #222222;
|
}
|
}
|
}
|
|
.tl_list_item_go {
|
display: flex;
|
align-items: center;
|
|
input {
|
text-align: right;
|
width: 180rpx;
|
height: 60rpx;
|
border-radius: 8rpx;
|
border: 1rpx solid #E5E5E5;
|
padding: 0 30rpx;
|
box-sizing: border-box;
|
font-size: 28rpx;
|
font-weight: 400;
|
color: #333333;
|
}
|
|
span {
|
font-size: 28rpx;
|
font-weight: 400;
|
color: #999999;
|
margin-right: 10rpx;
|
}
|
}
|
}
|
}
|
|
.tl_zw {
|
height: 160rpx;
|
}
|
|
.tl_footer {
|
width: 100%;
|
position: fixed;
|
bottom: 0;
|
padding: 0 30rpx calc(env(safe-area-inset-bottom) + 20rpx);
|
box-sizing: border-box;
|
z-index: 999;
|
background-color: #fff;
|
|
.tl_footer_submit {
|
width: 690rpx;
|
height: 88rpx;
|
border: none;
|
background: #4275FC;
|
box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
|
border-radius: 8rpx;
|
font-size: 30rpx;
|
font-weight: 500;
|
color: #FFFFFF;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
}
|
}
|
}
|
</style>
|