SmartStorage/pages/backMaterialReceiveDetail/backMaterialReceiveDetail.vue

513 lines
11 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view>
<view class="single-fetch" v-for="(fetch, index) in fetchList" :key="index" @click="openPopup(fetch)">
<view>
<span>类型名称</span>
<h4>{{ fetch.typeName }}</h4>
</view>
<view>
<span>规格型号</span>
<h4>{{ fetch.typeCode }}</h4>
</view>
<view>
<span>待退料数量</span>
<h4>{{ fetch.num }}</h4>
</view>
</view>
<uni-popup ref="popup1" type="center" :mask-click="false">
<view class="popup1">
<view class="pop-top">
<h4>退料接收</h4>
<uni-icons style="color: #AAAAAA; font-weight: bold;" type="closeempty" size="20"
@click="closePopup1">
</uni-icons>
</view>
<h5 style="width: 85%; margin: 2vh auto; font-weight: normal; text-align: center;">请选择接收方式</h5>
<view class="select-area">
<view @click="scanCode">二维码</view>
<view @click="codeOut">编码接收</view>
<view @click="rfidOut">RFID接收</view>
</view>
<!-- <view class="ipt-area">
<uni-easyinput v-model="codeVal" placeholder="请输入编码"></uni-easyinput>
</view> -->
</view>
</uni-popup>
<uni-popup ref="popup2" type="center" :mask-click="false">
<view class="popup2">
<view class="pop-top">
<h4>退料接收</h4>
<uni-icons style="color: #AAAAAA; font-weight: bold;" type="closeempty" size="20"
@click="closePopup2">
</uni-icons>
</view>
<view class="info-area">
<view>
<h4>类型名称</h4>
<span>{{ infoList.typeName }}</span>
</view>
<view>
<h4>规格型号</h4>
<span>{{ infoList.typeModelName }}</span>
</view>
<view>
<h4>待入库数量</h4>
<span>{{ infoList.preNum }}</span>
</view>
<!-- <view style="flex-direction: column;">
<h4 style="margin-bottom: 30rpx;">待修状态</h4>
<uni-data-checkbox v-model="fixVal" :localdata="fixRange"></uni-data-checkbox>
</view> -->
<view>
<h4>合格数量</h4>
<uni-easyinput type="number" v-model="passedNum" placeholder="请输入"></uni-easyinput>
</view>
<view>
<h4>待修数量</h4>
<uni-easyinput type="number" v-model="waitRepairNum" placeholder="请输入"></uni-easyinput>
</view>
<view>
<h4>待报废数量</h4>
<uni-easyinput type="number" v-model="waitCrashNum" placeholder="请输入"></uni-easyinput>
</view>
</view>
<view class="sub-btn" @click="multiOut">
退料接收
</view>
</view>
</uni-popup>
</view>
</template>
<script>
import QS from "qs"
export default {
data() {
return {
fetchList: [
],
codeVal: '',
manageType: '',
infoList: '',
multiNum: 1,
subList: {},
fixVal: '',
fixRange: [{
text: '合格',
value: '0'
},
{
text: '待修',
value: '1'
},
{
text: '待报废',
value: '2'
}
],
passedNum: '',
waitRepairNum: '',
waitCrashNum: '',
detailsId: '',
taskId: '',
submitFlag: false,
taskStatus: '',
transMaCode: '',
rfidNum: '',
sendTypeId: '',
parentId: ''
}
},
methods: {
openPopup(list) {
console.log(list);
this.infoList = list
this.rfidNum = list.num
this.transMaCode = list.code
this.sendTypeId = list.typeId
this.parentId = list.id
if (Number(list.num) == 0) {
uni.showToast({
icon: 'none',
title: '待退料数据为0请勿再点击'
})
return
}
if (this.infoList.manageType == '0') {
this.$refs.popup1.open()
} else {
const userInfo = uni.getStorageSync('userInfo');
console.log("userInfo", userInfo)
const userId = userInfo.userid
const {
taskId,
id,
typeId,
modelId,
manageType,
typeName,
typeCode,
num
} = this.infoList
const params = {
taskId,
id,
typeId,
modelId,
manageType,
userId,
typeName,
typeCode,
num
}
const urlStr = QS.stringify(params)
console.log("urlSTR", urlStr)
uni.navigateTo({
url: `/pages/numReceive/numReceive?${urlStr}`
})
}
},
closePopup1() {
this.$refs.popup1.close()
},
closePopup2() {
this.$refs.popup2.close()
},
scanCode() {
const that = this
that.closePopup1()
uni.scanCode({
success: (res) => {
const fixedCode = res.result.split('=')[1]
const userId = uni.getStorageSync('userInfo').userid
if (!fixedCode) {
uni.showToast({
icon: 'none',
title: '未识别到设备!'
})
} else {
uni.navigateTo({
url: `/pages/scanReceive/scanReceive?code=${fixedCode}&typeId=${that.infoList.modelId}&num=${that.infoList.num}&parentId=${that.infoList.id}&manageType=${that.infoList.manageType}&taskId=${that.taskId}&createBy=${userId}&scanType="back"`
})
}
}
})
/* uni.navigateTo({
url: `/pages/QRIn/QRIn?typeId=${that.infoList.modelId}&num=${that.infoList.num}&parentId=${that.infoList.id}&manageType=${that.infoList.manageType}&taskId=${that.taskId}&createBy=${userId}&scanType="back"`
}) */
},
codeOut() {
this.closePopup1()
const userInfo = uni.getStorageSync('userInfo');
console.log("userInfo", userInfo)
const userId = userInfo.userid
const {
taskId,
id,
typeId,
modelId,
manageType,
typeName,
typeCode,
num
} = this.infoList
const params = {
taskId,
id,
typeId,
modelId,
manageType,
userId,
typeName,
typeCode,
num
}
const urlStr = QS.stringify(params)
console.log("urlSTR", urlStr)
uni.navigateTo({
url: `/pages/codeReceive/codeReceive?${urlStr}&maCode=${this.transMaCode}`
})
},
rfidOut() {
this.closePopup1()
uni.navigateTo({
url: `/pages/rfidReceive/rfidReceive?waitOut=${this.rfidNum}&typeId=${this.sendTypeId}&parentId=${this.parentId}&taskId=${this.taskId}`
})
},
multiOut() {
let that = this
this.closePopup2()
that.subList = {
parentId: that.infoList.parenntId,
typeId: that.infoList.typeId,
outNum: that.multiNum,
companyId: uni.getStorageSync('userInfo').sysUser.companyId
}
console.log(that.subList);
that.$api.fetchMaterialOutStore.subOutStore(that.subList, null).then(res => {
console.log(res);
if (res.data.code == 200) {
uni.showToast({
icon: 'none',
title: '退料接收成功!',
success: () => {
uni.navigateBack()
}
})
} else {
uni.showToast({
icon: 'none',
title: '退料接收失败!'
})
}
}).catch(err => {
console.log(err);
})
},
initListData() {
let that = this
console.log(that.detailsId);
that.$api.backMaterialReceive.backMaterialReceiveDetail({
id: that.detailsId
}).then(res => {
console.log(res);
if (res.data.code == 200) {
/* for (let i = 0; i < res.data.data.length; i++) {
res.data.data[i].num = res.data.data[i].num.split('.')[0]
} */
that.fetchList = res.data.data
console.log(that.fetchList);
}
}).catch(err => {
console.log(err);
})
},
backReceiveEndBackFn() {
const that = this
let total = that.reduceNumTotal()
console.log("total==", total)
if (total > 0) {
uni.showToast({
icon: 'none',
title: '请完成退料接收后才能结束任务'
})
return
}
// submitFlag false
if (that.submitFlag == true) {
return
}
that.submitFlag = true
console.log(that.taskId, that.detailsId);
that.$api.backMaterialReceive.backReceiveEndBack({
createBy: uni.getStorageSync('userInfo').userid,
taskId: that.taskId,
parentId: that.detailsId
}).then(res => {
console.log(res)
if (res.data.code == 200) {
uni.showToast({
icon: 'none',
title: '结束任务成功'
})
console.log("退料结束", res)
that.submitFlag = false
uni.navigateBack()
} else {
uni.showToast({
icon: 'none',
title: res.data.msg
})
}
}).catch(err => {
console.log(err, 'sss');
that.submitFlag = false
}).finally(result => {
that.submitFlag = false
})
},
reduceNumTotal() {
const that = this
let sum = that.fetchList.reduce((accumulator, currentValue) => {
return accumulator + Number(currentValue.num);
}, 0);
console.log("numaccumulator", sum)
return sum
}
},
onLoad(params) {
console.log(params);
this.taskId = params.taskId
this.detailsId = params.id
this.taskStatus = params.taskStatus
},
onShow() {
this.initListData()
},
onNavigationBarButtonTap(ev) {
console.log("点击了自定义按钮", ev);
const that = this
if (ev.text == '结束任务') {
if (this.taskStatus == "40") {
uni.showToast({
icon: 'none',
title: '请勿再点击'
})
return
}
that.backReceiveEndBackFn()
}
}
}
</script>
<style lang="scss">
.single-fetch {
width: 100%;
box-sizing: border-box;
padding: 20rpx 35rpx;
border-bottom: 1px solid #DDDDDD;
view {
display: flex;
align-items: center;
margin-bottom: 25rpx;
span {
color: #A7A7A7;
padding-right: 20rpx;
}
h4 {
font-size: 14px;
font-weight: normal;
}
}
view:last-child {
margin-bottom: 0;
}
}
.btm-exam {
position: fixed;
left: 0;
bottom: 0;
width: 100%;
box-sizing: border-box;
padding: 20rpx 40rpx;
display: flex;
justify-content: flex-end;
border-top: 2px solid #F6F8FF;
.exam {
box-sizing: border-box;
padding: 10rpx 50rpx;
border-radius: 30rpx;
background-color: #3788FF;
font-size: 14px;
color: #fff;
}
}
.popup1 {
width: 80vw;
height: 20vh;
background-color: #fff;
border-radius: 15rpx;
overflow: hidden;
background: linear-gradient(#D9E7FE, #fff, #fff, #fff);
.pop-top {
width: 100%;
height: 5vh;
box-sizing: border-box;
padding: 0 25rpx;
display: flex;
justify-content: space-between;
align-items: center;
}
.select-area {
width: 85%;
margin: 40rpx auto;
display: flex;
justify-content: space-around;
align-items: center;
view {
box-sizing: border-box;
font-size: 14px;
padding: 10rpx 20rpx;
border: 1px solid #D5D5D4;
border-radius: 20rpx;
}
}
.ipt-area {
width: 85%;
margin: 40rpx auto;
}
}
.popup2 {
width: 80vw;
height: 60vh;
background-color: #fff;
border-radius: 15rpx;
overflow: hidden;
background: linear-gradient(#D9E7FE, #fff, #fff, #fff);
.pop-top {
width: 100%;
height: 5vh;
box-sizing: border-box;
padding: 0 25rpx;
display: flex;
justify-content: space-between;
align-items: center;
}
.info-area {
width: 85%;
margin: 30rpx auto;
display: flex;
flex-direction: column;
view {
margin-bottom: 15rpx;
display: flex;
align-items: center;
h4 {
font-weight: normal;
color: #989898;
font-size: 14px;
width: 35%;
}
span {
font-size: 14px;
}
}
}
.sub-btn {
width: 85%;
margin: 30rpx auto;
background-color: #3788FF;
color: #fff;
box-sizing: border-box;
padding: 15rpx 0;
display: flex;
justify-content: center;
align-items: center;
border-radius: 40rpx;
font-size: 14px;
}
}
</style>