<template>
|
<default-header-page-layout ref="page" title="呼叫AGV入库" >
|
<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">
|
<!-- page start -->
|
<template>
|
<uni-section title="选择线别" type="line">
|
<uni-data-select
|
placeholder="请选择线别"
|
v-model="lineType"
|
:disabled="true"
|
:localdata="wolist"
|
@change="change"
|
></uni-data-select>
|
</uni-section>
|
<!-- <scan-input-form-item
|
class="forma-item"
|
label="零件编号"
|
v-model="partCode"
|
:msg="msg.part"
|
:msg-type="msgType.containter"
|
@search="toggle('bottom')"
|
@clear="onClearContainter"
|
/> -->
|
<view>
|
<view class="labelnew">零件信息:</view>
|
<button type="default" class="btn" @click="toggle('bottom')">添加零件</button>
|
</view>
|
<scan-input-form-item
|
class="forma-item"
|
label="零件编号"
|
v-model="partCode"
|
:msg="msg.part"
|
:writeflag="true"
|
:scanflsg = "false"
|
:has-search="false"
|
:msg-type="msgType.containter"
|
@search="toggle('bottom')"
|
@clear="onClearContainter"
|
/>
|
<scan-input-form-item
|
class="forma-item"
|
label="零件名称"
|
v-model="partName"
|
:writeflag="true"
|
:scanflsg = "false"
|
:has-search="false"
|
:msg="msg.containter"
|
:msg-type="msgType.containter"
|
@search="onLvc"
|
@clear="onLvc"
|
/>
|
<scan-input-form-item
|
class="forma-item"
|
label="小车编号"
|
v-model="wareContainerCode"
|
:writeflag="true"
|
:scanflsg = "false"
|
:has-search="false"
|
:msg="msg.containter"
|
:msg-type="msgType.containter"
|
@search="onLvc"
|
@clear="onLvc"
|
/>
|
|
<scan-input-form-item
|
class="forma-item"
|
label="绑定库位"
|
v-model="wareLocationCode"
|
:writeflag="true"
|
:scanflsg = "false"
|
:has-search="false"
|
:msg="msg.location"
|
:msg-type="msgType.containter"
|
@search="onLvc"
|
@clear="onLvc"
|
/>
|
</template>
|
</view>
|
</view>
|
<!-- page end -->
|
<template v-slot:footer>
|
<view class="bottom-btns-row">
|
<div class="btn-frame left-btn-frame"><u-button text="重 置" @click="onReset"></u-button></div>
|
<div class="btn-frame right-btn-frame"><u-button type="primary" text="呼叫AGV" @click="onConfirm"></u-button></div>
|
</view>
|
</template>
|
<template>
|
<view>
|
<uni-popup ref="popup" background-color="#fff" >
|
<view class="title">
|
<text style="width: 35%;">选择零件</text>
|
<view class="">
|
<view @click="getall" class="slot-right"
|
style="width: 100%; display: flex; justify-content: flex-end;margin-right: 15px;color:#00cc33">
|
显示全部
|
</view>
|
</view>
|
</view>
|
<view class="search">
|
<u-search placeholder="搜索零件编号" @clear="clearcode" @blur="getPartData" v-model="tempno"
|
input-align="center" bg-color="#fff" shape="square" :show-action="false"></u-search>
|
</view>
|
<scroll-view scroll-y="true" style="height:350px" @scrolltolower="lower">
|
<view class="line3" v-for="(item,index) in list" :key="index" @click="picker(item, $event)">
|
<text style="color:#000">{{item.name + " "}}</text>
|
<text class="col7 ml10">{{item.code}}</text>
|
</view>
|
<u-empty text="暂无数据" mode="list" v-if='list.length==0'></u-empty>
|
<!-- <u-loadmore :status="status" v-if='list.length>=6' /> -->
|
</scroll-view>
|
</uni-popup>
|
</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 { parseDic, $successInfo } from '@/static/js/utils/index.js'
|
let initInterVal = null;
|
const defaultForm = {
|
containter:''
|
}
|
export default {
|
name:'agvPage',
|
components:{DefaultHeaderPageLayout,ActionUserRow,ScanInputFormItem},
|
data(){
|
return {
|
pageBodyHeight:0,
|
form:{...defaultForm},
|
msg:{
|
containter:'',
|
part:'',
|
location:''
|
},
|
msgType:{
|
containter:'error'
|
},
|
containter:null,
|
list:[],
|
wolist: [{value:1,text:"A线"},
|
{value:2,text:"B线"},
|
{value:3,text:"C线"},],
|
lineType:"",
|
wareContainerCode:"",
|
wareLocationCode:"",
|
partCode:"",
|
partlist:"",
|
containerType:"",
|
partName:"",
|
tempno:""
|
}
|
},
|
created() {
|
let _user = this.$store.getters['user/getUserInfo'];
|
this.lineType = _user.lineType;
|
},
|
mounted() {
|
this.getPartData()
|
},
|
methods:{
|
lower() {
|
this.$emit('lower', this.page++)
|
},
|
toggle(type) {
|
this.type = type
|
this.$refs.popup.open(type)
|
// this.getLocationInfo()
|
this.getPartData()
|
},
|
/* 获取零件列表 */
|
getPartData(){
|
let params = {partCode:this.tempno}
|
this.$api.get('list',params,{block:'part'}).then((res)=>{
|
res.forEach((item)=>{
|
item.value=item.code
|
item.text=item.name
|
})
|
this.list=res
|
}).catch(()=>{
|
callback && callback(false)
|
})
|
},
|
getall(){
|
this.tempno = ''
|
this.getPartData()
|
},
|
picker(val, event) {
|
|
this.getData(val.code)
|
// this.wareLocationCode = val.realLocationCode
|
// this.wareContainerCode = val.wareContainerCode
|
// this.partCode = val.partCode
|
// this.partName = val.partName
|
// this.lineType = val.lineType
|
// this.containerType = val.containerType
|
// this.partlist=[]
|
// this.locationno=""
|
this.$refs.popup.close()
|
},
|
onLvc(callback,needloding=true)
|
{
|
if (!this.partCode) {
|
this.msgType.containter = 'error'
|
this.msg.part = '请输入零件号!';
|
return false;
|
}
|
this.msg.part = '';
|
this.getData()
|
},
|
getData(item){
|
let params = {partCode:item,
|
PageNo:1,
|
PageSize:500,}
|
this.$api.get('page',params,{block:'exwarehouse',fullRes:true}).then((d)=>{
|
//this.partlist = d.data.rows;
|
//this.locationno=this.partCode;
|
this.wareLocationCode = d.data.rows[0].realLocationCode
|
this.wareContainerCode = d.data.rows[0].wareContainerCode
|
this.partCode = d.data.rows[0].partCode
|
this.partName = d.data.rows[0].partName
|
this.lineType = d.data.rows[0].lineType
|
this.containerType = d.data.rows[0].containerType
|
}).catch(()=>{
|
this.containter = null;
|
this.wareLocationCode = ""
|
})
|
},
|
change(e) {
|
console.log("e:", e);
|
},
|
|
/* 响应重置按钮 */
|
onReset(){
|
this.resetContainer()
|
},
|
resetContainer(){
|
//this.lineType=""
|
this.wareContainerCode = ""
|
this.wareLocationCode = ""
|
this.partCode = ""
|
this.partName = ""
|
this.lineType = ""
|
},
|
/* 响应确认按钮 */
|
onConfirm(){
|
this.dealSubmit((f)=>{
|
if (f) {
|
this.resetContainer()
|
$successInfo('呼叫AGV入库成功!');
|
}
|
})
|
},
|
/* 出库接口调用 */
|
dealSubmit(callback){
|
let params = {
|
lineType:this.lineType,
|
wareLocationCode:this.wareLocationCode,
|
wareContainerCode:this.wareContainerCode,
|
partCode:this.partCode
|
}
|
this.$api.post('fronttaskcreate',params,{block:'agv'}).then(()=>{
|
callback && callback(true)
|
}).catch(()=>{
|
callback && callback(false)
|
})
|
},
|
/* 页面初始化获取页面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(()=>{
|
/* 页面初始化后需要执行的代码在这边调用 */
|
})
|
},
|
onUnload(){
|
this.clearInitInterval()
|
}
|
}
|
</script>
|
|
<style scoped lang="scss">
|
.bottom-btns-row{
|
display: flex;
|
padding: 10rpx 0;
|
background-color: #fff;
|
.btn-frame{
|
width: 50%;
|
box-sizing: border-box;
|
}
|
.left-btn-frame{
|
padding-left: 20rpx;
|
padding-right: 8rpx;
|
}
|
.right-btn-frame{
|
padding-right: 20rpx;
|
padding-left: 8rpx;
|
}
|
}
|
.line3 {
|
line-height: 1.8rem;
|
padding: 8px 3px;
|
font-size: 0.93rem;
|
border-bottom: 1px solid #eaeaea;
|
text-align: center;
|
}
|
.materials-block{
|
padding: 12rpx 16rpx 0 16rpx;
|
.materials-box{
|
background-color: $uni-bg-color;
|
border-radius: 6rpx;
|
box-sizing: border-box;
|
position: relative;
|
$topHeight:50rpx;
|
padding-top: $topHeight;
|
.box-top{
|
position: absolute;
|
top:0;
|
left: 0;
|
width: 100%;
|
height: $topHeight;
|
display: flex;
|
align-items: center;
|
&>.line{
|
width: 100%;
|
height: 2rpx;
|
background-color: $uni-border-color;
|
}
|
&>.title{
|
position: absolute;
|
top:0;
|
left: 0;
|
width: 100%;
|
height: 100%;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
z-index: 1;
|
&>.text{
|
font-size: 30rpx;
|
background-color: $uni-bg-color;
|
color: $uni-border-color;
|
padding: 4rpx 12rpx;
|
}
|
}
|
}
|
}
|
}
|
.material-item-group{
|
padding: 0 4rpx;
|
.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;
|
}
|
}
|
.badge-box{
|
position: absolute;
|
top:8rpx;
|
left: 8rpx;
|
z-index: 1;
|
}
|
}
|
}
|
</style>
|