<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 />
|
<view class="with-action-user-row-page-content">
|
<!-- step 1 start @search="onSearchContainter"-->
|
<view v-if="!addMaterialVisible">
|
<scan-input-form-item class="forma-item" label="储位码" v-model="form.startPlace" :hasSearch="false" />
|
|
<scan-input-form-item placeholder="请选择" :clearable="false" :hasScan="false" :hasSearch="false"
|
@click.native="visible=true" class="forma-item" label="任务类型" v-model="form.endPlace" />
|
<EasyPicker :visible.sync="visible" :list="taskTypeList" labelField="label" valueField="code"
|
@select="getEndPlaceVal" />
|
</view>
|
<addMaterial v-if="addMaterialVisible" ref="addMaterial" :materialData="materialData"
|
@delMaterialData="delMaterialData" />
|
</view>
|
|
|
</view>
|
<template v-slot:footer>
|
<view class="bottom-btns-row">
|
<template>
|
<div class="btn-frame" v-if="!addMaterialVisible"><u-button text="添加物料"
|
@click="addMaterial"></u-button></div>
|
<div class="btn-frame" v-if="addMaterialVisible"><u-button text="返回" @click="back"></u-button></div>
|
<div class="btn-frame"><u-button :disabled="abled" type="primary" text="提交" @click="actionHandle"></u-button></div>
|
</template>
|
</view>
|
</template>
|
</default-header-page-layout>
|
</template>
|
|
<script>
|
import DefaultHeaderPageLayout from '@/components/DefaultHeaderPageLayout.vue'
|
import ActionUserRow from '@/components/ActionUserRow.vue'
|
import ScanInputFormItem from '@/components/ScanInputFormItem.vue'
|
import EasySelectFormItem from '@/components/EasySelectFormItem.vue'
|
import EasyPicker from '@/components/EasyPicker.vue'
|
import UViewFormSelectPicker from '@/components/UViewFormSelectPicker.vue'
|
import addMaterial from './modules/addMaterial.vue'
|
import {
|
parseDic,
|
$alert,
|
$successInfo,
|
getDicList
|
} from '@/static/js/utils/index.js'
|
|
import {
|
getLoadingDeliveryEnd,
|
loadingDeliveryCreate,
|
loadingDeliveryContinueOne,
|
loadingDeliveryContinueTWo
|
} from '@/api/loadingDelivery.js'
|
let initInterVal = null;
|
export default {
|
name: 'receiveInPage',
|
components: {
|
DefaultHeaderPageLayout,
|
ActionUserRow,
|
ScanInputFormItem,
|
EasySelectFormItem,
|
addMaterial,
|
EasyPicker
|
},
|
data() {
|
return {
|
pageBodyHeight: 0,
|
form: {
|
startPlace: '',
|
endPlace: ''
|
},
|
paramsOne: {},
|
paramsTwo: {},
|
taskTypeList: [{
|
code: 1,
|
label: '人工'
|
},
|
{
|
code: 2,
|
label: 'AGV'
|
},
|
|
],
|
materialData: [{
|
materialId: 20241206,
|
materialName: '物料名称2',
|
materialNo: '002',
|
}],
|
visible: false,
|
addMaterialVisible: false
|
}
|
},
|
computed: {
|
abled() {
|
let {
|
startPlace,
|
endPlace
|
} = this.form
|
return !Boolean(endPlace) || !Boolean(startPlace)||this.materialData.length<=0;
|
}
|
},
|
methods: {
|
|
// 获取上料机工位列表
|
async gerEndPlaceList() {
|
try {
|
let {
|
result
|
} = await getLoadingDeliveryEnd();
|
let endPlaceList = []
|
result.forEach(item => {
|
endPlaceList.push({
|
code: item,
|
label: item
|
})
|
})
|
// this.taskTypeList = endPlaceList;
|
} catch (e) {
|
//TODO handle the exception
|
console.log(e);
|
}
|
},
|
|
// 上料机工位选择器返回值
|
getEndPlaceVal(val, valObj, index) {
|
this.form.endPlace = valObj.code
|
},
|
|
// 添加物料
|
addMaterial() {
|
this.addMaterialVisible = true
|
},
|
|
//删除物料
|
delMaterialData(materialId) {
|
this.materialData = this.materialData.filter(item => item.materialId != materialId)
|
},
|
|
// 返回按钮
|
back() {
|
this.addMaterialVisible = false
|
this.materialData = this.$refs.addMaterial.get()
|
console.log(this.materialData, 'this.materialData');
|
},
|
|
// 操作按钮
|
async actionHandle() {
|
if (this.actionType == 1) {
|
// 创建AGV任务
|
try {
|
let {
|
result
|
} = await loadingDeliveryCreate(this.form)
|
this.paramsOne = result
|
this.$modal('呼叫AGV成功')
|
this.actionType = 2
|
} catch (e) {
|
//TODO handle the exception
|
console.log(e);
|
}
|
} else if (this.actionType == 2) {
|
if (!this.paramsOne.taskNo) this.$modal('任务号不能为空!')
|
try {
|
await loadingDeliveryContinueOne(this.paramsOne)
|
this.$modal('装料完成')
|
this.actionType = 3
|
} catch (e) {
|
//TODO handle the exception
|
console.log(e);
|
}
|
} else if (this.actionType == 3) {
|
if (!this.paramsOne.taskNo) this.$modal('任务号不能为空!')
|
try {
|
await loadingDeliveryContinueTwo(this.paramsOne)
|
this.$modal('取料完成')
|
this.reset()
|
} catch (e) {
|
//TODO handle the exception
|
console.log(e);
|
}
|
}
|
},
|
|
|
/* 页面初始化获取页面body高度的定时器 */
|
startInitInterval(callback) {
|
initInterVal = setInterval(() => {
|
if (this.pageBodyHeight) {
|
this.clearInitInterval()
|
callback && callback()
|
} else {
|
this.pageBodyHeight = this.$refs.page.getBodyHeight()
|
}
|
}, 200)
|
},
|
/* 清除定时器 */
|
clearInitInterval() {
|
try {
|
clearInterval(initInterVal)
|
initInterVal = null
|
} catch (e) {
|
//TODO handle the exception
|
}
|
}
|
},
|
onReady() {
|
this.startInitInterval(async () => {
|
/* 页面初始化后需要执行的代码在这边调用 */
|
this.gerEndPlaceList()
|
})
|
},
|
onUnload() {
|
this.clearInitInterval()
|
}
|
}
|
</script>
|
|
<style scoped lang="scss">
|
.bottom-btns-row {
|
display: flex;
|
justify-content: center;
|
padding: 10rpx 10rpx;
|
background-color: #fff;
|
|
.btn-frame {
|
flex: 1;
|
box-sizing: border-box;
|
}
|
|
.btn-frame:nth-child(1) {
|
margin-right: 10rpx;
|
}
|
|
.left-btn-frame {
|
padding-left: 20rpx;
|
padding-right: 8rpx;
|
}
|
|
.right-btn-frame {
|
padding-right: 20rpx;
|
padding-left: 8rpx;
|
}
|
}
|
|
.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>
|