| | |
| | | <view> |
| | | <view class="code"> |
| | | <uni-search-bar :focus="searchValueFocus" v-model="searchValue" @input="searchValueInput()" |
| | | maxlength="500" ancel="cancel" @clear="clear" placeholder="输入 / 扫描 订单号"> |
| | | maxlength="500" ancel="cancel" @clear="clear" placeholder="输入 / 扫描 站点号"> |
| | | </uni-search-bar> |
| | | </view> |
| | | <view class="list" style="background-color: #3eb689;color: #fff;" v-if="station"> |
| | | <view class="list" :class="item.style" v-if="stations" v-for="item in stations"> |
| | | <view class="list-left"> |
| | | <view>站点编号:{{station.stationCode}}</view> |
| | | <view>工位编号:{{station.devNo}}</view> |
| | | <view>工位状态:{{station.locSts$}}</view> |
| | | <view>条形码:{{station.barcode}}</view> |
| | | <view>工位编号:{{item.devNo}}</view> |
| | | <view>站点状态:{{item.locSts$}}</view> |
| | | <view>货架码:{{item.barcode}}</view> |
| | | <view>站点类型:{{item.locType1$}}</view> |
| | | <!-- <view class="card-id">{{i + 1}}</view> --> |
| | | </view> |
| | | <view class="list-right" @click="getOrderDetl(item)"> |
| | | <uni-icons type="right" color="#fff"></uni-icons> |
| | | </view> |
| | | </view> |
| | | <!-- <view class="list" style="background-color: #3eb689;color: #fff;" v-if="station"> |
| | | <view class="list-left"> |
| | | <view>工位编号:{{station.devNo}}</view> |
| | | <view>站点状态:{{station.locSts$}}</view> |
| | | <view>条形码:{{station.barcode}}</view> |
| | | </view> |
| | | <view class="list-right" @click="getOrderDetl(item)"> |
| | | <uni-icons type="right" color="#fff"></uni-icons> |
| | | </view> |
| | | </view> --> |
| | | <view class="list" style="background-color: #019fe8;color: #fff;" v-if="wrkMast"> |
| | | <view class="list-left"> |
| | | <view>工作号:{{wrkMast.wrkNo}}</view> |
| | |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="list" style="background-color: #fda800;color: #fff;" v-if="!wrkDetls" v-for="wrkMast in waitPakins"> |
| | | <view class="list-left"> |
| | | <view>物料号:{{wrkMast.matnr}}</view> |
| | | <view>物料名称:{{wrkMast.maktx}}</view> |
| | | <view>批号:{{wrkMast.batch}}</view> |
| | | <view>规格:{{wrkMast.specs}}</view> |
| | | <view>数量:{{wrkMast.anfme}}</view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view style="height: 100rpx;"></view> |
| | | |
| | | <!-- 空板入库弹窗 --> |
| | | <view> |
| | | <uni-popup ref="revise" type="dialog"> |
| | | <view class="popup"> |
| | | <!-- 标题 --> |
| | | <view class="title">请录入货架码</view> |
| | | <view class="popup-item"> |
| | | <view class="popup-item-left">货架码:</view> |
| | | <view class="popup-item-right"><input type="text" v-model="barcode"></view> |
| | | </view> |
| | | <view class="btn"> |
| | | <view class="btn-left" @click="reviseClose">取消</view> |
| | | <view class="btn-right" @click="reviseConfirm()">入库</view> |
| | | </view> |
| | | </view> |
| | | </uni-popup> |
| | | </view> |
| | | |
| | | <!-- 底部操作按钮 --> |
| | | <view class="buttom" v-if="waitPakins.length > 0"> |
| | | <button size="mini" type="primary" @click="startPakin(searchValue)" v-if="waitPakins">启动入库</button> |
| | | </view> |
| | | |
| | | <!-- 底部操作按钮 --> |
| | | <view class="buttom" v-if="station.locSts == 'O'"> |
| | | <button size="mini" type="primary" @click="emptyPakin()">空板入库</button> |
| | | </view> |
| | | |
| | | <!-- 底部操作按钮 --> |
| | | <view class="buttom" v-if="wrkMast"> |
| | | <button size="mini" type="primary" @click="containerMoveOut(searchValue)" v-if="wrkMast.ioType == 101">确认出库</button> |
| | | <button size="mini" type="primary" @click="pickIn(searchValue)" v-if="wrkMast.ioType == 103">已拣料回库</button> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | |
| | | searchValueFocus: true, |
| | | searchValue: '', |
| | | station: '', |
| | | stations: [], |
| | | wrkMast: '', |
| | | wrkDetls: [] |
| | | |
| | | wrkDetls: [], |
| | | waitPakins: [], |
| | | barcode: '', |
| | | option: 'pick' |
| | | } |
| | | }, |
| | | onLoad() { |
| | | onShow() { |
| | | this.baseUrl = uni.getStorageSync('baseUrl'); |
| | | this.token = uni.getStorageSync('token'); |
| | | }, |
| | | onShow() { |
| | | |
| | | this.getBasDevp('all') |
| | | this.searchValueFocus = true |
| | | }, |
| | | methods: { |
| | | searchValueInput() { |
| | | if (this.searchValue == '') { |
| | | this.station = '' |
| | | this.stations = [] |
| | | this.wrkMast = '' |
| | | this.wrkDetls = [] |
| | | } else { |
| | | this.getBasDevp() |
| | | this.getBasDevp('one') |
| | | } |
| | | }, |
| | | clear() { |
| | | |
| | | this.waitPakins = [] |
| | | this.wrkDetls = [] |
| | | }, |
| | | // 获取暂存位 |
| | | getBasDevp() { |
| | | getBasDevp(type) { |
| | | let _this = this |
| | | uni.request({ |
| | | url: `${_this.baseUrl}/agv/basDevp/list/auth`, |
| | |
| | | success(res) { |
| | | res = res.data |
| | | if (res.code === 200) { |
| | | if (type == 'all') { |
| | | for (let k of res.data.records) { |
| | | if (k.locSts != 'O') { |
| | | k['style'] = 'station-wrk' |
| | | } else { |
| | | k['style'] = 'station-nowrk' |
| | | } |
| | | } |
| | | _this.stations = res.data.records |
| | | } else { |
| | | res.data.records |
| | | for (let item of res.data.records) { |
| | | if (item.locSts != 'O') { |
| | | item['style'] = 'station-wrk' |
| | | } else { |
| | | item['style'] = 'station-nowrk' |
| | | } |
| | | } |
| | | _this.getOrderDetl(res.data.records[0]) |
| | | } |
| | | |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | // 获取组托档 |
| | | getWaitPakin(barcode) { |
| | | let _this = this |
| | | uni.request({ |
| | | url: `${_this.baseUrl}/agv/waitPakin/list/auth`, |
| | | header: {'token': uni.getStorageSync('token')}, |
| | | data: { |
| | | curr: 1, |
| | | limit: 1000, |
| | | supp_code: barcode |
| | | }, |
| | | method: 'GET', |
| | | success(res) { |
| | | res = res.data |
| | | if (res.code === 200) { |
| | | for (let item of res.data.records) { |
| | | _this.station = item |
| | | _this.getWrkMast(item.barcode) |
| | | _this.waitPakins = res.data.records |
| | | // _this.getWrkDetl(item.wrkNo) |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | }) |
| | | }, |
| | | // 获取工作明细 |
| | | getWrkDetl(wrkNo) { |
| | | let _this = this |
| | | uni.request({ |
| | |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | // 拣料回库 |
| | | pickIn(e) { |
| | | let _this = this |
| | | uni.request({ |
| | | url: `${_this.baseUrl}/agv/basDevp/visualized/container/pickIn`, |
| | | data: {devNo: e}, |
| | | method: 'POST', |
| | | success(res) { |
| | | res = res.data |
| | | if (res.code === 200) { |
| | | _this.searchValue = '' |
| | | setTimeout(()=> { |
| | | _this.searchValue = '' |
| | | _this.station = '' |
| | | _this.wrkMast = '' |
| | | _this.wrkDetls = [] |
| | | _this.waitPakins = [] |
| | | },100) |
| | | } else { |
| | | uni.showToast({ title: res.msg, icon: "error", position: 'top' }) |
| | | setTimeout(()=> { |
| | | _this.searchValue = '' |
| | | _this.getBasDevp() |
| | | },2000) |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | // 容器离场 |
| | | containerMoveOut(e) { |
| | | let _this = this |
| | | let devNo = {devNo:[e]} |
| | | // console.log(JSON.stringify(devNo)); |
| | | uni.request({ |
| | | url: `${_this.baseUrl}/agv/basDevp/visualized/container/moveOut`, |
| | | data: JSON.stringify(devNo), |
| | | method: 'POST', |
| | | success(res) { |
| | | res = res.data |
| | | if (res.code === 200) { |
| | | _this.searchValue = '' |
| | | setTimeout(()=> { |
| | | _this.searchValue = '' |
| | | _this.station = '' |
| | | _this.wrkMast = '' |
| | | _this.wrkDetls = [] |
| | | _this.waitPakins = [] |
| | | },100) |
| | | } else { |
| | | uni.showToast({ title: res.msg, icon: "error", position: 'top' }) |
| | | setTimeout(()=> { |
| | | _this.searchValue = '' |
| | | _this.getBasDevp() |
| | | },2000) |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | // 启动入库 |
| | | startPakin(type) { |
| | | let that = this |
| | | let params = [] |
| | | let param = {} |
| | | if (type == 'empty') { |
| | | param = { |
| | | devNo: this.searchValue, |
| | | containerCode: this.barcode, |
| | | } |
| | | } else { |
| | | param = { |
| | | devNo: this.searchValue, |
| | | containerCode: this.station.barcode, |
| | | } |
| | | } |
| | | params.push(param) |
| | | uni.request({ |
| | | url: that.baseUrl + '/agvMobile/pakin/empty/auth', |
| | | data: {pad: params}, |
| | | method: 'POST', |
| | | header: {'token': uni.getStorageSync('token')}, |
| | | success(result) { |
| | | var res = result.data |
| | | if (res.code === 200) { |
| | | setTimeout(()=> { |
| | | that.searchValue = '' |
| | | that.station = '' |
| | | that.wrkMast = '' |
| | | that.wrkDetls = [] |
| | | that.waitPakins = [] |
| | | },300) |
| | | uni.showToast({ |
| | | title: res.msg, |
| | | icon: "none", |
| | | position: 'top' |
| | | }) |
| | | } else if (res.code == 403) { |
| | | that.messageText = res.msg |
| | | that.messageToggle('error') |
| | | setTimeout(() => { |
| | | uni.reLaunch({ |
| | | url: '../login/login' |
| | | }); |
| | | }, 1000); |
| | | } else { |
| | | that.messageText = res.msg |
| | | that.messageToggle('error') |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | |
| | | // 空板入库 |
| | | emptyPakin() { |
| | | let _this = this |
| | | this.$refs.revise.open() |
| | | }, |
| | | // 取消空板入库 |
| | | reviseClose() { |
| | | this.$refs.revise.close() |
| | | }, |
| | | // 确认空板入库 |
| | | reviseConfirm() { |
| | | this.startPakin('empty') |
| | | this.$refs.revise.close() |
| | | }, |
| | | // 前往站点明细页面 |
| | | getOrderDetl(e) { |
| | | let _this = this |
| | | uni.navigateTo({ |
| | | url: "./stationDetl", |
| | | success: function(res) { |
| | | // 通过eventChannel向被打开页面传送数据 向另外一个页面传递值的 |
| | | res.eventChannel.emit('item', { |
| | | item: e |
| | | }) |
| | | _this.searchValue = '' |
| | | }, |
| | | events: { |
| | | // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据 另外一个页面传过来的 |
| | | acceptDataFromOpenedPage: function(data) { |
| | | _this.searchValueFocus = true |
| | | } |
| | | }, |
| | | }); |
| | | } |
| | | } |
| | | } |
| | |
| | | color: #e2231a; |
| | | font-weight: bold; |
| | | } |
| | | |
| | | .popup { |
| | | width: 80vw; |
| | | min-height: 100rpx; |
| | | background-color: #FFF; |
| | | border-radius: 25rpx; |
| | | } |
| | | .title { |
| | | height: 100rpx; |
| | | line-height: 100rpx; |
| | | width: 100%; |
| | | color: #606266; |
| | | text-align: center; |
| | | font-size: 16px; |
| | | } |
| | | .popup-item { |
| | | height: 80rpx; |
| | | line-height: 80rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | font-size: 14px; |
| | | } |
| | | .popup-item-left { |
| | | width: 16vw; |
| | | padding-right: 20rpx; |
| | | text-align: right; |
| | | color: #606266; |
| | | } |
| | | .popup-item-right { |
| | | display: flex; |
| | | align-items: center; |
| | | width: 50vw; |
| | | height: 50rpx; |
| | | padding: 2px 5px; |
| | | border: 1px solid #E4E7ED; |
| | | border-radius: 5rpx; |
| | | } |
| | | .popup-item-right input{ |
| | | color: #606266; |
| | | } |
| | | .btn { |
| | | display: flex; |
| | | height: 90rpx; |
| | | margin-top: 20rpx; |
| | | border-top: 1px solid #DCDFE6; |
| | | justify-content: center; |
| | | align-items: center; |
| | | } |
| | | .btn-left { |
| | | display: flex; |
| | | flex: 1; |
| | | height: 100%; |
| | | justify-content: center; |
| | | align-items: center; |
| | | color: #606266; |
| | | border-right: 1px solid #DCDFE6; |
| | | } |
| | | .btn-right { |
| | | display: flex; |
| | | flex: 1; |
| | | justify-content: center; |
| | | align-items: center; |
| | | color: #409EFF; |
| | | } |
| | | .station-wrk { |
| | | background-color: #ff7356; |
| | | color: #fff; |
| | | } |
| | | .station-nowrk { |
| | | background-color: #3eb689; |
| | | color: #fff; |
| | | } |
| | | </style> |