<template>
|
<default-header-page-layout ref="page" title="出库执行">
|
|
<view class="page-frame with-action-user-row" :style="{height:pageBodyHeight+'px'}" v-if="pageBodyHeight">
|
<action-user-row />
|
<scan-input-form-item-car v-model="CarNo" class="forma-item" :label="baseTitile_Car"
|
:msg-type="msgType" />
|
<view class="with-action-user-row-page-content">
|
|
|
<Content @deleteData="deleteData" :workPieceData="workPieceData" />
|
</view>
|
<modalPwd @reflesh="reflesh" ref="pwdRef" />
|
</view>
|
<template v-slot:footer>
|
<view class="bottom-btns-row">
|
<view class="btn-frame right-btn-frame">
|
<u-button type="primary" text="确认出库"
|
@click="outBoundConfirm"></u-button>
|
</view>
|
</view>
|
</template>
|
</default-header-page-layout>
|
</template>
|
|
<script>
|
import DefaultHeaderPageLayout from '@/components/DefaultHeaderPageLayout.vue'
|
import ActionUserRow from '@/components/ActionUserRow.vue'
|
import ScanInputFormItem from './modules/ScanInputFormItem.vue'
|
import ScanInputFormItemCar from './modules/ScanInputFormItem_Car.vue'
|
import Content from './modules/content.vue'
|
import modalPwd from './modules/modalPwd.vue'
|
import Vue from 'vue'
|
import {
|
parseDic,
|
$alert,
|
$successInfo
|
} from '@/static/js/utils/index.js'
|
import {
|
getWorkPieceByOP80NewCode,
|
outBoundWorkPiece,
|
getOutBoundWorkPieceInfoCount
|
} from '@/api/outBound/index.js'
|
import {
|
listbycode
|
} from '@/api/common/index.js'
|
export default {
|
name: 'baseInPage',
|
components: {
|
DefaultHeaderPageLayout,
|
ActionUserRow,
|
ScanInputFormItem,
|
ScanInputFormItemCar,
|
Content,
|
modalPwd
|
},
|
data() {
|
return {
|
barHeight: '',
|
ckNumToday: "0", //今天总出库数
|
baseTitile_Car: '扫描小车码',
|
title: '',
|
CarNo:'',
|
pageBodyHeight: 0,
|
initInterVal: null,
|
myInterval: null,
|
msg: '',
|
msgType: 'error',
|
OP80NewCode: '',
|
workPieceData: [],
|
workPieceStatus: [],
|
inputFocus: true,
|
// codeLength:1
|
}
|
},
|
onLoad() {
|
var _this = this;
|
_this._getOutBoundWorkPieceInfoCount();
|
//不再循环读
|
/*
|
this.myInterval = setInterval(function() {
|
_this._getOutBoundWorkPieceInfoCount();
|
}, 1000 * 10);
|
//*/
|
//this.myInterval=setInterval(this.myFun(), 3000);
|
},
|
methods: {
|
// 获取工件信息
|
async _getOutBoundWorkPieceInfoCount(OP80NewCode) {
|
try {
|
let {
|
data
|
} = await getOutBoundWorkPieceInfoCount(null)
|
this.ckNumToday = data;
|
} catch (e) {}
|
this.setMsg();
|
},
|
// 获取工件信息
|
async onSearchContainter(OP80NewCode) {
|
//debugger
|
if (OP80NewCode.length==0) {
|
this.initFocus(100);
|
// uni.showToast({
|
// title: '工件码或成品码长度不正确',
|
// icon: 'error',
|
// duration: 2000,
|
// mask: true
|
// });
|
return;
|
}
|
|
this.inputFocus = false
|
const param = {
|
OP80NewCode: OP80NewCode
|
}
|
try {
|
let data={};
|
data.addTime = new Date();
|
data.workPieceID=OP80NewCode;
|
data.oP80NewCode=OP80NewCode;
|
if (!this.workPieceData.some(item => item.workPieceID == data.workPieceID)) {
|
data.addTime = new Date();
|
this.workPieceData.push(data)
|
}
|
//顺序调转,排序
|
this.workPieceData.sort((a, b) => b.addTime - a.addTime);
|
|
//console.log(this.workPieceData,'dsts');
|
// setTimeout(()=>{
|
// this.OP80NewCode = '' ;//每次刷完就清空输入框 【Editby shaocx,2024-06-12】
|
// this.inputFocus=true
|
// },100)
|
} catch (e) {
|
//debugger
|
//TODO handle the exception
|
console.log(e);
|
}
|
//this.msg = " 扫码数:"+this.workPieceData.length+" 今日出库数:";
|
this.setMsg();
|
},
|
setMsg() {
|
this.msg = " 扫码数:" + this.workPieceData.length + " 今日出库数:" + this.ckNumToday;
|
},
|
initFocus(num) {
|
setTimeout(() => {
|
this.OP80NewCode = ''; //每次刷完就清空输入框 【Editby shaocx,2024-06-12】
|
this.inputFocus = true
|
}, num)
|
},
|
// 获取扫码长度
|
// async listbycode(){
|
// try{
|
// let {data}=await listbycode({code:'outbound_code_length'})
|
// this.codeLength=data.length>0?Number.parseInt(data[0].label):1
|
// }catch(e){
|
// //TODO handle the exception
|
// console.log(e);
|
// }
|
|
// },
|
onClearContainter() {
|
this.OP80NewCode = ''
|
},
|
deleteData(opt) {
|
this.workPieceData = this.workPieceData.filter(item => item.workPieceID != opt.workPieceID)
|
this.setMsg();
|
},
|
reflesh() {
|
this.OP80NewCode = ''
|
this.workPieceData = []
|
setTimeout(() => {
|
this._getOutBoundWorkPieceInfoCount();
|
this.setMsg();
|
}, 1000)
|
},
|
outBoundConfirm() {
|
this.$refs.pwdRef.showModal(this.workPieceData,this.CarNo)
|
|
/*
|
// 存在非成品
|
const flag = this.workPieceData.some(item => item.workPieceState != 10)
|
if (flag) {
|
uni.showModal({
|
title: '提示',
|
content: '当前工件存在非成品,确定强制出库吗?',
|
success: (value) => {
|
const {
|
confirm,
|
cancel
|
} = value
|
if (confirm) {
|
this.$refs.pwdRef.showModal(this.workPieceData)
|
}
|
}
|
})
|
} else {
|
this.$refs.pwdRef.showModal(this.workPieceData)
|
}
|
|
//*/
|
|
},
|
/* 页面初始化获取页面body高度的定时器 */
|
startInitInterval(callback) {
|
this.initInterVal = setInterval(() => {
|
//console.log('bbb')
|
if (this.pageBodyHeight) {
|
this.clearInitInterval()
|
callback && callback()
|
} else {
|
this.pageBodyHeight = this.$refs.page.getBodyHeight()
|
}
|
}, 200)
|
},
|
/* 清除定时器 */
|
clearInitInterval() {
|
try {
|
//alert('执行');
|
clearInterval(this.initInterVal)
|
this.initInterVal = null
|
} catch (e) {
|
//TODO handle the exception
|
}
|
},
|
clearInitInterval2() {
|
try {
|
clearInterval(this.myInterval)
|
this.myInterval = null
|
} catch (e) {
|
//TODO handle the exception
|
}
|
},
|
comfirmUpdate() {
|
this.$refs.pwdRef.showModal(this.barDetail);
|
},
|
myFun() {
|
console.log('aaaa')
|
}
|
},
|
onReady() {
|
this.setMsg();
|
|
this.startInitInterval(() => {
|
/* 页面初始化后需要执行的代码在这边调用 */
|
// this.listbycode()
|
|
})
|
},
|
mounted() {
|
// 设置fixed定位
|
//this.barHeight = Vue.prototype.CustomBar || 45
|
this.barHeight = Vue.prototype.CustomBar
|
},
|
onUnload() {
|
//alert(11); 页面离开时
|
this.clearInitInterval()
|
this.clearInitInterval2();
|
},
|
//监听原生返回键
|
onBackPress(e) {
|
// 此处一定要return为true,否则页面不会返回到指定路径
|
if (1 != 1) {
|
return false //可返回
|
} else {
|
uni.showModal({
|
title: '提示',
|
content: '是否确认返回?',
|
showCancel: true,
|
cancelColor: '#333333',
|
success: (res => {
|
if (res.confirm) {
|
uni.redirectTo({
|
url: '/pages/home/index'
|
})
|
} else if (res.cancel) {
|
|
}
|
})
|
});
|
return true
|
}
|
},
|
}
|
</script>
|
|
<style scoped lang="scss">
|
.bottom-btns-row {
|
display: flex;
|
padding: 10rpx 0;
|
background-color: #fff;
|
|
.btn-frame {
|
box-sizing: border-box;
|
}
|
|
.left-btn-frame {
|
width: 30%;
|
padding-left: 20rpx;
|
padding-right: 8rpx;
|
}
|
|
.right-btn-frame {
|
flex: 1;
|
padding-right: 20rpx;
|
padding-left: 8rpx;
|
}
|
|
.u-button {
|
border: 2px solid #F08202;
|
}
|
}
|
|
.forma-item {
|
margin-bottom: 24rpx;
|
}
|
|
.material-item-group {
|
background-color: $uni-bg-color;
|
padding-top: 10rpx;
|
|
.material-list-item {
|
border-bottom: 2rpx solid $uni-border-color;
|
padding-bottom: 10rpx;
|
padding-left: 60rpx;
|
margin-bottom: 10rpx;
|
position: relative;
|
|
&:last-child {
|
border-bottom: 0;
|
}
|
|
.item-row {
|
display: flex;
|
|
&>.label {
|
flex-shrink: 0;
|
color: $u-tips-color;
|
width: 144rpx;
|
}
|
|
&>.content {
|
flex-grow: 1;
|
color: $u-content-color;
|
|
uni-input {
|
font: inherit;
|
color: $u-primary;
|
text-decoration: underline;
|
}
|
}
|
}
|
|
.badge-box {
|
position: absolute;
|
top: 8rpx;
|
left: 8rpx;
|
z-index: 1;
|
}
|
|
.close-btn {
|
$closeBtnSize: 70rpx;
|
width: $closeBtnSize;
|
height: $closeBtnSize;
|
z-index: 1;
|
position: absolute;
|
top: 0rpx;
|
right: 8rpx;
|
background-color: $u-error;
|
opacity: 0.6;
|
border-radius: 25rpx;
|
|
.icon-layer {
|
position: absolute;
|
width: 100%;
|
height: 100%;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
z-index: 2;
|
}
|
}
|
}
|
}
|
</style>
|