lijuncheng
4 months ago
2 changed files with 1002 additions and 14 deletions
@ -0,0 +1,483 @@ |
|||
<template> |
|||
<view class=""> |
|||
<uni-popup ref="popup" :maskClick="false"> |
|||
<view class="uni-flex uni-column pop_customer"> |
|||
<view class="" style="padding:10rpx"> |
|||
<view class="uni-flex u-col-center uni-row space-between" style="padding: 10rpx 10rpx 20rpx 10rpx"> |
|||
<view class="" style="font-size: 35rpx;"> |
|||
{{title}} |
|||
</view> |
|||
<image style="width: 35rpx;height: 35rpx;" src="/static/icons/icons_close.svg" |
|||
@click="closeRequestPopup()"></image> |
|||
</view> |
|||
<view class='split_line'></view> |
|||
<view class="uni-flex uni-column" style="background-color: white; "> |
|||
<view class="uni-flex uni-column"> |
|||
|
|||
<view class="title " style="display: flex; align-items: center;padding: 10rpx;"> |
|||
<text style=" flex-shrink: 0;width: 25%;">生产线:</text> |
|||
<view class="customerBorder" @click="showSelectLine"> |
|||
{{productionLineName}} |
|||
</view> |
|||
<u-select v-model="showProductLineSelect" mode="mutil-column-auto" |
|||
:list="productLineList" @confirm="confirmSelectLine"></u-select> |
|||
|
|||
<view class=""> |
|||
<image src="/static/icons/down.svg" mode="" |
|||
style=" width: 40rpx;height: 40rpx;margin-left: 20rpx;" @click="showSelectLine"> |
|||
</image> |
|||
</view> |
|||
</view> |
|||
<view class='split_line'></view> |
|||
<view class="title " style="display: flex; align-items: center;padding: 10rpx;"> |
|||
<text style=" flex-shrink: 0;width: 25%;">计划日期:</text> |
|||
<view class="customerBorder" @click="showSelectDate"> |
|||
{{planDate}} |
|||
</view> |
|||
<u-select v-model="showDateSelect" mode="mutil-column-auto" |
|||
:list="planDateList" @confirm="confirmSelectDate"></u-select> |
|||
|
|||
<view class=""> |
|||
<image src="/static/icons/down.svg" mode="" |
|||
style=" width: 40rpx;height: 40rpx;margin-left: 20rpx;" @click="showSelectDate"> |
|||
</image> |
|||
</view> |
|||
</view> |
|||
<view class='split_line'></view> |
|||
<view class="title " style="display: flex;align-items: center;padding: 10rpx;"> |
|||
<text style=" flex-shrink: 0; width: 25%;">物料代码:</text> |
|||
<view class="customerBorder"> |
|||
{{itemCode}} |
|||
</view> |
|||
<view v-if="planQty>0">{{planQty}}({{getUomInfo(uom)}})</view> |
|||
<u-select v-model="showItemCodeSelect" mode="single-column" :list="itemCodeList" |
|||
@confirm="confirmSelectItem"></u-select> |
|||
<view class="" > |
|||
|
|||
<image src="" mode="" |
|||
style=" width: 40rpx;height: 40rpx;margin-left: 20rpx;" |
|||
@click="showSelectItemCode"> |
|||
</image> |
|||
</view> |
|||
</view> |
|||
|
|||
<view class='split_line'></view> |
|||
<view class="title " style="display: flex;align-items: center;padding: 10rpx;"> |
|||
<text style=" flex-shrink: 0; width: 25%;">包装规格:</text> |
|||
<view class="customerBorder"> |
|||
{{packUnitName}} |
|||
</view> |
|||
<u-select v-model="showPackUnitSelect" mode="single-column" :list="packUnitList" |
|||
@confirm="confirmSelectPackUnit"></u-select> |
|||
<view class=""> |
|||
<image src="/static/icons/down.svg" mode="" |
|||
style=" width: 40rpx;height: 40rpx;margin-left: 20rpx;" |
|||
@click="showSelectPackUnit"> |
|||
</image> |
|||
</view> |
|||
</view> |
|||
<view class='split_line'></view> |
|||
|
|||
<view class="title " style="display: flex;align-items: center;padding: 10rpx;"> |
|||
<text style=" flex-shrink: 0; width: 25%;">批次:</text> |
|||
<uni-easyinput v-model="batch"></uni-easyinput> |
|||
<view class=""> |
|||
<image src="" mode="" style=" width: 40rpx;height: 40rpx;margin-left: 20rpx;" |
|||
@click="showSelectLine"> |
|||
</image> |
|||
</view> |
|||
</view> |
|||
|
|||
<view class='split_line'></view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
<view class="uni-flex uni-row hide_border"> |
|||
<button class="btn_edit_big_cancle" hover-class="btn_edit_big_after" @click="cancel()">取消</button> |
|||
<button class="btn_edit_big_confirm" hover-class="btn_edit_big_after" @click="confirm()">确认</button> |
|||
</view> |
|||
</view> |
|||
</uni-popup> |
|||
<comMessage ref="comMessage"></comMessage> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import { |
|||
getIssueJobByProductionline, |
|||
getPlaneInfoByproductLine, |
|||
getPackUnitByItemCode, |
|||
getProductionlineAndWorkStation |
|||
} from '@/api/request2.js'; |
|||
import { |
|||
getPackUnitName, |
|||
getUomInfo |
|||
} from '@/common/directory.js'; |
|||
|
|||
import { |
|||
getCurrDate, |
|||
getBatch8, |
|||
dateFormatData, |
|||
lastThreeDays |
|||
} from '@/common/basic.js'; |
|||
|
|||
import { |
|||
calc |
|||
} from '@/common/calc.js'; |
|||
|
|||
import uom from '@/mycomponents/qty/uom.vue' |
|||
import packQty from '@/mycomponents/qty/packQty.vue' |
|||
import balanceStatus from '@/mycomponents/status/balanceStatus.vue' |
|||
import winScanItem from '@/mycomponents/scan/winScanItem.vue' |
|||
|
|||
export default { |
|||
components: { |
|||
uom, |
|||
balanceStatus, |
|||
winScanItem, |
|||
packQty, |
|||
}, |
|||
data() { |
|||
return { |
|||
itemCode: '请选择物料信息', |
|||
uom: "", |
|||
qty: null, |
|||
planQty: 0, |
|||
goodQty: 0, |
|||
planNumber: "", |
|||
productLineCode: "", |
|||
showProductLineSelect: false, |
|||
productLineList: [], |
|||
productionLineName: "请选择生产线", |
|||
productionLineCode: "", |
|||
batch: "", |
|||
packUnitName: "请选择包装规格", |
|||
packUnit: "", |
|||
packUnitList: [], |
|||
packQtyHint: "", |
|||
packQty: 0, |
|||
showPackUnitSelect: false, |
|||
itemCodeList: [], |
|||
showItemCodeSelect: false, |
|||
workStationCode: "", |
|||
planDate: '', |
|||
showDateSelect:false, |
|||
planDateList:[], |
|||
fgLocationCode:"", |
|||
rawLocationCode:"" |
|||
} |
|||
}, |
|||
props: { |
|||
title: { |
|||
type: String, |
|||
default: '开工阶段' |
|||
}, |
|||
itemCodeTypeList: { |
|||
type: Array, |
|||
default: [] |
|||
}, |
|||
}, |
|||
methods: { |
|||
|
|||
openRequestPopup() { |
|||
this.initData(); |
|||
this.planDate =getCurrDate() |
|||
this.batch = getBatch8() |
|||
this.$refs.popup.open('bottom') |
|||
}, |
|||
initData() { |
|||
this.itemCode = '请选择物料信息'; |
|||
this.uom = "" |
|||
this.planQty = 0 |
|||
this.goodQty = 0; |
|||
this.packQty = 0; |
|||
this.planNumber = "" |
|||
this.productLineCode = "" |
|||
this.showProductLineSelect = false |
|||
this.productLineList = [] |
|||
this.productionLineName = "请选择生产线" |
|||
this.productionLineCode = "" |
|||
this.batch = "" |
|||
this.packUnitName = "请选择包装规格" |
|||
this.packUnit = "", |
|||
this.packQtyHint = "" |
|||
this.showPackUnitSelect = false |
|||
// this.packUnitList = [] |
|||
this.itemCodeList = [] |
|||
this.showItemCodeSelect = false |
|||
this.workStationCode = "" |
|||
this.planDate="" |
|||
this.showDateSelect =false |
|||
this.planDateList=[] |
|||
this.fgLocationCode="" |
|||
this.rawLocationCode="" |
|||
|
|||
}, |
|||
|
|||
closeRequestPopup() { |
|||
this.$refs.popup.close() |
|||
}, |
|||
itemCodeLoseFocus() { |
|||
this.itemCodeFocus = false; |
|||
}, |
|||
|
|||
confirm() { |
|||
if (!this.planDate) { |
|||
this.showErrorMessage('请先选择计划日期'); |
|||
return; |
|||
} |
|||
|
|||
if (this.productionLineName == "请选择生产线") { |
|||
this.showErrorMessage("请选择生产线") |
|||
return |
|||
} |
|||
|
|||
if (!this.batch) { |
|||
this.showErrorMessage("请输入批次例如:20200101") |
|||
return |
|||
} |
|||
|
|||
if (this.itemCode == "请选择物料信息") { |
|||
this.showErrorMessage("请选择物料信息") |
|||
return |
|||
} |
|||
|
|||
if (this.packUnitName == "请选择包装规格") { |
|||
this.showErrorMessage("请选择包装规格") |
|||
return |
|||
} |
|||
|
|||
this.callback(); |
|||
}, |
|||
|
|||
callback() { |
|||
let item = { |
|||
productionLineName: this.productionLineName, |
|||
productionLineCode: this.productionLineCode, //生产线 |
|||
itemCode: this.itemCode, |
|||
uom: this.getUomInfo(this.uom), |
|||
batch: this.batch, |
|||
packUnitName: this.packUnitName, |
|||
packUnit: this.packUnit, |
|||
packQtyHint: this.packQtyHint, |
|||
packQty: this.packQty, |
|||
planQty: this.planQty, |
|||
goodQty: this.goodQty, |
|||
planNumber: this.planNumber, |
|||
workStationCode: this.workStationCode, |
|||
fgLocationCode:this.fgLocationCode, |
|||
rawLocationCode:this.rawLocationCode |
|||
}; |
|||
this.closeRequestPopup(); |
|||
this.$emit("confirm", item); |
|||
}, |
|||
|
|||
showErrorMessage(message, type) { |
|||
setTimeout(r => { |
|||
this.$refs.comMessage.showErrorMessage(message, res => {}) |
|||
}) |
|||
}, |
|||
cancel(e) { |
|||
this.closeRequestPopup(); |
|||
}, |
|||
|
|||
confirmSelectLine(data) { |
|||
this.productionLineName = data[0].label + "—" + data[1].label |
|||
this.productionLineCode = data[0].value |
|||
this.workStationCode = data[1].value |
|||
var parent =this.productLineList.filter(res=>res.value==this.productionLineCode) |
|||
var fgLocation =parent[0].children.filter(children=>children.value==this.workStationCode) |
|||
this.fgLocationCode= fgLocation[0].fgLocationCode; |
|||
this.clearItemCode() |
|||
this.clearPackUnit() |
|||
|
|||
}, |
|||
clearItemCode(){ |
|||
this.planDate =getCurrDate() |
|||
this.itemCode ="请选择物料信息" |
|||
this.uom = "" |
|||
this.planQty = 0; |
|||
this.goodQty = 0 |
|||
this.planNumber = "" |
|||
}, |
|||
|
|||
confirmSelectDate(data) { |
|||
this.planDate=data[0].label |
|||
}, |
|||
|
|||
showSelectDate(){ |
|||
this.showDateSelect =true; |
|||
var list =lastThreeDays(3); |
|||
this.planDateList=[] |
|||
list.forEach(res=>{ |
|||
this.planDateList.push({ |
|||
label :res, |
|||
value:"" |
|||
}) |
|||
}) |
|||
}, |
|||
|
|||
showSelectLine() { |
|||
if (this.productLineList.length == 0) { |
|||
uni.showLoading({ |
|||
title: "加载中", |
|||
mask: true |
|||
}) |
|||
getProductionlineAndWorkStation().then(res => { |
|||
uni.hideLoading() |
|||
if (res.data && res.data.length > 0) { |
|||
this.productLineList = res.data |
|||
this.showProductLineSelect = true |
|||
} else { |
|||
this.showErrorMessage('未查找到生产线信息'); |
|||
} |
|||
|
|||
}).catch(error => { |
|||
uni.hideLoading() |
|||
this.showErrorMessage(error); |
|||
}) |
|||
} else { |
|||
this.showProductLineSelect = true |
|||
} |
|||
|
|||
|
|||
}, |
|||
showSelectItemCode() { |
|||
if (!this.planDate) { |
|||
this.showErrorMessage('请先选择计划日期'); |
|||
return; |
|||
} |
|||
if (!this.productionLineCode) { |
|||
this.showErrorMessage('请先选择生产线'); |
|||
return; |
|||
} |
|||
uni.showLoading({ |
|||
title: "加载中", |
|||
mask: true |
|||
}) |
|||
getPlaneInfoByproductLine(this.productionLineCode, this.planDate).then(res => { |
|||
uni.hideLoading() |
|||
if (res.data && res.data.length > 0) { |
|||
res.data.forEach(item => { |
|||
item.label = item.itemCode + "(" + item.planQty + this.getUomInfo(item.uom) + ")" |
|||
item.value = item |
|||
}) |
|||
this.itemCodeList = res.data |
|||
this.showItemCodeSelect = true |
|||
} else { |
|||
this.showErrorMessage('未查找到物料信息'); |
|||
} |
|||
|
|||
}).catch(error => { |
|||
uni.hideLoading() |
|||
this.showErrorMessage(error); |
|||
}) |
|||
}, |
|||
confirmSelectItem(data) { |
|||
let productionPlan = data[0].value; |
|||
this.itemCode = productionPlan.itemCode; |
|||
this.uom = productionPlan.uom |
|||
this.planQty = productionPlan.planQty; |
|||
this.goodQty = productionPlan.goodQty |
|||
this.planNumber = productionPlan.number |
|||
|
|||
//清除其他数据 |
|||
this.clearPackUnit(); |
|||
uni.showLoading({ |
|||
title: "加载中", |
|||
mask: true |
|||
}) |
|||
getPackUnitByItemCode(this.itemCode).then(res => { |
|||
uni.hideLoading() |
|||
if (res.data && res.data.list.length > 0) { |
|||
res.data.list.forEach(item => { |
|||
item.value = item.packUnit |
|||
item.label = getPackUnitName(item.packUnit) + "(" + item.packQty + this |
|||
.getUomInfo(item.uom) + ")"; |
|||
}) |
|||
this.packUnitList = res.data.list |
|||
var defaultData =res.data.list.filter(item=>item.defaultPackageunit=="TRUE") |
|||
this.confirmSelectPackUnit(defaultData) |
|||
} |
|||
|
|||
}).catch(error => { |
|||
uni.hideLoading() |
|||
}) |
|||
}, |
|||
|
|||
clearPackUnit(){ |
|||
this.packUnitName = "请选择包装规格" |
|||
this.packUnit = "" |
|||
let pack = this.packUnitList.filter(r => r.packUnit == this.packUnit); |
|||
this.packQtyHint = ""; |
|||
this.packQty = 0 |
|||
}, |
|||
|
|||
showSelectPackUnit() { |
|||
if (this.itemCode == "请选择物料信息") { |
|||
this.showErrorMessage('请先选择物料'); |
|||
return; |
|||
} |
|||
|
|||
uni.showLoading({ |
|||
title: "加载中", |
|||
mask: true |
|||
}) |
|||
getPackUnitByItemCode(this.itemCode).then(res => { |
|||
uni.hideLoading() |
|||
if (res.data && res.data.list.length > 0) { |
|||
res.data.list.forEach(item => { |
|||
item.value = item.packUnit |
|||
item.label = getPackUnitName(item.packUnit) + "(" + item.packQty + this |
|||
.getUomInfo(item.uom) + ")"; |
|||
}) |
|||
this.packUnitList = res.data.list |
|||
this.showPackUnitSelect = true |
|||
} else { |
|||
this.showErrorMessage('未查找到包装信息'); |
|||
} |
|||
|
|||
}).catch(error => { |
|||
uni.hideLoading() |
|||
this.showErrorMessage(error); |
|||
}) |
|||
|
|||
}, |
|||
|
|||
confirmSelectPackUnit(data) { |
|||
this.packUnitName = data[0].label |
|||
this.packUnit = data[0].value |
|||
let pack = this.packUnitList.filter(r => r.packUnit == this.packUnit); |
|||
this.packQtyHint = pack[0].packQty + "(" + this |
|||
.getUomInfo(pack[0].uom) + ")"; |
|||
this.packQty = pack[0].packQty |
|||
}, |
|||
getUomInfo(uom) { |
|||
let item = getUomInfo(uom); |
|||
if (item == '') { |
|||
return uom; |
|||
} else { |
|||
return item.label |
|||
} |
|||
}, |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss"> |
|||
.title { |
|||
font-size: 30rpx; |
|||
} |
|||
|
|||
.customerBorder { |
|||
width: 100%; |
|||
border: 1rpx solid lightgray; |
|||
border-radius: 5rpx; |
|||
padding: 15rpx; |
|||
} |
|||
</style> |
@ -1,37 +1,542 @@ |
|||
<template> |
|||
<view class=""> |
|||
<view class=""> |
|||
<com-blank-view @goScan='openFg' v-if="detailSource.length==0"></com-blank-view> |
|||
<view class="page-wraper" style="background-color: #fff;"> |
|||
|
|||
<view class="header"> |
|||
<view class=""> |
|||
<com-blank-view @goScan='openFg' v-if="!dataContent"></com-blank-view> |
|||
</view> |
|||
<view class="" v-if="dataContent"> |
|||
<view class="" style="font-size: 35rpx;padding: 10rpx; padding-left: 15rpx;"> |
|||
生产计划:{{dataContent.planNumber}} |
|||
</view> |
|||
<view class='split_line'></view> |
|||
|
|||
<view class="cell_box uni-flex uni-row"> |
|||
<view class="cell_info"> |
|||
<view class="text_lightblue">完工库位</view> |
|||
<view style="font-size: 30rpx; margin-top: 13rpx;" >{{dataContent.fgLocationCode}} |
|||
</view> |
|||
|
|||
</view> |
|||
<view class="cell_info"> |
|||
<view class="text_lightblue">计划数</view> |
|||
<view>{{dataContent.planQty}}{{dataContent.uom}}</view> |
|||
</view> |
|||
<view class="cell_info"> |
|||
<view class="text_lightblue">已完工</view> |
|||
<view>{{ dataContent.goodQty }}{{dataContent.uom}}</view> |
|||
</view> |
|||
<view class="cell_info"> |
|||
<view class="text_lightblue">未完工</view> |
|||
<view>{{dataContent.noGoodQty}}{{dataContent.uom}}</view> |
|||
</view> |
|||
</view> |
|||
<view class='split_line'></view> |
|||
|
|||
<view class="" style="padding-top: 10rpx; padding-bottom: 10rpx; margin-left: 10rpx;"> |
|||
<item :dataContent="dataContent"></item> |
|||
</view> |
|||
<view class='split_line'></view> |
|||
<view class="uni-flex uni-row space-between" style="align-items: center"> |
|||
<view style="word-break: break-all;"> |
|||
<batch :batch="dataContent.batch"></batch> |
|||
<view class="card_view "> |
|||
<text style="color: #FFA500;padding: 5px;font-size: 30rpx;">包装规格</text> |
|||
<text class="card_content ">{{dataContent.packUnit}} </text> |
|||
</view> |
|||
</view> |
|||
<view style="word-break: break-all; font-size: 35rpx; font-weight: bold;"> |
|||
<text v-if="dataContent.handleQty>0" style="color: #FFA500;">{{dataContent.handleQty}}/</text> |
|||
{{dataContent.packQtyHint}} |
|||
</view> |
|||
|
|||
|
|||
</view> |
|||
<view class='split_line' v-if="dataContent"></view> |
|||
|
|||
</view> |
|||
|
|||
|
|||
</view> |
|||
|
|||
|
|||
<view style="margin-top: 480rpx; padding-bottom: 160rpx;" v-if="dataContent"> |
|||
|
|||
<scroll-view scroll-y="true" class=""> |
|||
<view class="scan_view" v-for="(item, index) in showList" :key="index"> |
|||
<uni-swipe-action> |
|||
<uni-swipe-action-item :right-options="options" @click="swipeClick($event,item,index)"> |
|||
<view class="uni-flex uni-row " |
|||
style="margin-left: 50rpx; padding-top: 10rpx; padding-bottom: 10rpx;"> |
|||
<view class="auto-wrap" style="font-size: 35rpx;font-weight: bold; width: 100%;"> |
|||
<text style="font-size: 30rpx;color: #B66463;">唯一码 </text> |
|||
{{item.content}} |
|||
</view> |
|||
</view> |
|||
</uni-swipe-action-item> |
|||
</uni-swipe-action> |
|||
<u-line color="#D8D8D8"></u-line> |
|||
</view> |
|||
|
|||
</scroll-view> |
|||
<uni-load-more :status="loadingType" v-if="showList.length>0" /> |
|||
|
|||
</view> |
|||
<view class="page-footer" v-if="dataContent"> |
|||
<view class="uni-flex u-col-center space-between " style="background-color:ghostwhite; width: 100%; "> |
|||
<view class=""> |
|||
<view class="uni-flex uni-row"> |
|||
</view> |
|||
|
|||
</view> |
|||
<view class=" uni-flex uni-row"> |
|||
<button class="btn_single_clear" hover-class="btn_commit_after" style="margin-right: 50rpx;" |
|||
@click="clear">清空</button> |
|||
<button class="btn_single_commit" hover-class="btn_commit_after" @click="submit">提交</button> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
<comNoReceiptPopup ref="comNoReceiptPopup" @confirm='requestConfirm'></comNoReceiptPopup> |
|||
<win-scan-button v-if="dataContent" @goScan='openScanPopup'></win-scan-button> |
|||
<win-scan-fg-label ref="scanPopup" @getResult='getScanResult' title='制品标签'></win-scan-fg-label> |
|||
<comMessage ref="comMessage"></comMessage> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import { |
|||
isCheckMesCode, |
|||
planReceiptSubmit, |
|||
createPutawayRequestByPlan, |
|||
createInspectRequestByPlan, |
|||
getPlanByNumber |
|||
} from '@/api/request2.js'; |
|||
import { |
|||
calc |
|||
} from '@/common/calc.js'; |
|||
|
|||
import { |
|||
getRemoveOption, |
|||
deepCopyData, |
|||
getCurrDateTime, |
|||
compare |
|||
} from '@/common/basic.js'; |
|||
import winScanButton from '@/mycomponents/scan/winScanButton.vue' |
|||
import comBlankView from '@/mycomponents/common/comBlankView.vue' |
|||
import comNoReceiptPopup from '@/pages/fg/coms/comNoReceiptPopup.vue' |
|||
import item from '@/mycomponents/item/item.vue' |
|||
import batch from '@/mycomponents/balance/batch.vue' |
|||
import pack from '@/mycomponents/balance/pack.vue' |
|||
import winScanFgLabel from "@/mycomponents/scan/winScanFgLabel.vue" |
|||
import comFgCard from "@/pages/productReceipt/coms/comFgCard.vue" |
|||
import { |
|||
Exception |
|||
} from 'sass'; |
|||
|
|||
export default { |
|||
components: { |
|||
comBlankView |
|||
comBlankView, |
|||
comNoReceiptPopup, |
|||
item, |
|||
batch, |
|||
pack, |
|||
winScanButton, |
|||
winScanFgLabel, |
|||
comFgCard |
|||
}, |
|||
data() { |
|||
return { |
|||
detailSource:[] |
|||
dataContent: null, |
|||
options: [], |
|||
showList: [], |
|||
allList: [], |
|||
index: 1, |
|||
loadingType: "", |
|||
pageSize: 20 |
|||
|
|||
}; |
|||
}, |
|||
|
|||
onShow() { |
|||
|
|||
onShow() {}, |
|||
onLoad() { |
|||
this.options = getRemoveOption() |
|||
this.openFg(); |
|||
}, |
|||
onReachBottom() { |
|||
console.log("onReachBottom") |
|||
//避免多次触发 |
|||
if (this.loadingType == 'nomore') { |
|||
return; |
|||
} |
|||
this.index++; |
|||
var list = this.getDataPage(this.index, this.pageSize) |
|||
if (list.length > 0) { |
|||
// this.showList=list |
|||
this.showList = this.showList.concat(list) |
|||
} else { |
|||
//没有更多了 |
|||
this.loadingType = "nomore"; |
|||
} |
|||
|
|||
}, |
|||
|
|||
|
|||
mounted() { |
|||
|
|||
|
|||
}, |
|||
methods: { |
|||
openFg(){ |
|||
|
|||
} |
|||
|
|||
openFg() { |
|||
setTimeout(res => { |
|||
if (this.$refs.comNoReceiptPopup) { |
|||
this.$refs.comNoReceiptPopup.openRequestPopup(); |
|||
} |
|||
}, 600) |
|||
|
|||
}, |
|||
requestConfirm(result) { |
|||
this.dataContent = { |
|||
itemCode: result.itemCode, |
|||
planNumber: result.planNumber, //计划单号 |
|||
handleQty: 0, |
|||
qty: 0, |
|||
planQty: result.planQty, |
|||
goodQty: result.goodQty, |
|||
noGoodQty: calc.sub(result.planQty, result.goodQty), |
|||
packQtyHint: result.packQtyHint, |
|||
packQty: result.packQty, |
|||
uom: result.uom, |
|||
batch: result.batch, |
|||
packUnit: result.packUnit, |
|||
workStationCode: result.workStationCode, |
|||
fgLocationCode:result.fgLocationCode, |
|||
subList: [] |
|||
} |
|||
}, |
|||
|
|||
initList() { |
|||
this.index = 1; |
|||
this.showList = [] |
|||
this.loadingType = ""; |
|||
this.showList = this.getDataPage(this.index, this.pageSize) |
|||
}, |
|||
|
|||
getDataPage(pageNo, pageSize) { |
|||
//计算总页数 |
|||
var totalPages = Math.ceil(this.allList.length / pageSize); |
|||
//当前页起始索引 |
|||
const start = (pageNo - 1) * pageSize; |
|||
const end = start + pageSize; //当前页结束索引 |
|||
return this.allList.slice(start, end) |
|||
|
|||
}, |
|||
|
|||
swipeClick(e, dataContent, index) { |
|||
if (e.content.text == "移除") { |
|||
this.$refs.comMessage.showQuestionMessage("是否要移除", res => { |
|||
if (res) { |
|||
this.allList.splice(index, 1); |
|||
this.initList() |
|||
} |
|||
|
|||
}) |
|||
} |
|||
|
|||
}, |
|||
|
|||
submit() { |
|||
if (this.allList.length == 0) { |
|||
this.showErrorMessage("请先扫描唯一码") |
|||
return; |
|||
} |
|||
|
|||
if (this.allList.length < this.dataContent.packQty) { |
|||
this.$refs.comMessage.showQuestionMessage("扫描数量小于包装规格数量,是否提交?", res => { |
|||
if (res) { |
|||
this.commit() |
|||
} |
|||
}); |
|||
} else { |
|||
this.commit(); |
|||
} |
|||
|
|||
}, |
|||
|
|||
async commit() { |
|||
|
|||
try { |
|||
uni.showLoading({ |
|||
title: "提交中...", |
|||
mask: true |
|||
}) |
|||
let params = this.setParams() |
|||
console.log(JSON.stringify(params)) |
|||
|
|||
let list = [] |
|||
var planData = await planReceiptSubmit(params) |
|||
if (planData.data) { |
|||
|
|||
planData.data.forEach(item => { |
|||
list.push({ |
|||
itemCode: item.itemCode, // 物品代码 |
|||
itemName: item.itemName, // 物品名称 |
|||
packName: item.packName, // 包装名称 |
|||
packageCode: item.toPackingNumber, // 包装号 |
|||
batch: item.toBatch, //批次 |
|||
parentNumber: item.parentNumber, //父包装号 |
|||
itemType: item.itemType, //物料类型 |
|||
asnNumber: item.asnNumber, //ASN |
|||
supplierCode: item.supplierCode, // 供应商 |
|||
qty: item.qty, // 数量 |
|||
printTimes: getCurrDateTime(), // 打印时间 |
|||
productionLineCode: item.productionLineCode, //生产线 |
|||
barcodeString: item.barcodeString, // 标签信息 |
|||
barcodeBase64: '', |
|||
requestNumber: item.requestNumber |
|||
}) |
|||
}) |
|||
} else { |
|||
throw new Error("提交失败") |
|||
} |
|||
|
|||
createPutawayRequestByPlan(list[0].requestNumber).then(res => { |
|||
createInspectRequestByPlan(list[0].requestNumber) |
|||
}) |
|||
|
|||
var queryParams = { |
|||
filters: [{ |
|||
column: "plan_type", |
|||
action: "==", |
|||
value: "assemble" |
|||
}, |
|||
{ |
|||
column: "number", |
|||
action: "==", |
|||
value: this.dataContent.planNumber |
|||
} |
|||
], |
|||
pageNo: 1, |
|||
pageSize: 100, |
|||
} |
|||
|
|||
var planeInfo = await getPlanByNumber(queryParams); |
|||
if (planeInfo.data && planeInfo.data.list.length > 0) { |
|||
if (planeInfo.data.list[0].goodQty >= planeInfo.data.list[0].planQty) { |
|||
this.clear(); |
|||
} else { |
|||
this.dataContent.planNumber = planeInfo.data.list[0].number; |
|||
this.dataContent.handleQty = 0; |
|||
this.dataContent.planQty = planeInfo.data.list[0].planQty |
|||
this.dataContent.goodQty = planeInfo.data.list[0].goodQty |
|||
this.dataContent.noGoodQty = calc.sub(planeInfo.data.list[0].planQty, planeInfo.data.list[ |
|||
0].goodQty), |
|||
this.dataContent.subList = [] |
|||
this.showList = []; |
|||
this.allList = [] |
|||
this.index = 1 |
|||
} |
|||
|
|||
} else { |
|||
throw new Error("未查找到单据信息") |
|||
} |
|||
uni.hideLoading() |
|||
this.showCommitSuccessMessage("提交成功<br>生成装配收货记录<br>"+list[0].requestNumber, list) |
|||
|
|||
} catch (error) { |
|||
uni.hideLoading() |
|||
var hint = error.message ? error.message : error |
|||
this.showErrorMessage(hint) |
|||
} |
|||
|
|||
}, |
|||
|
|||
setParams() { |
|||
this.allList.forEach(res => { |
|||
res.outsideItemCode = res.itemCode |
|||
res.outsideProduceDate = null |
|||
res.outsideSerialNumber = res.order |
|||
}) |
|||
this.dataContent.subList = this.allList |
|||
|
|||
return this.dataContent |
|||
}, |
|||
|
|||
clear() { |
|||
this.$refs.comMessage.showQuestionMessage("是否要清空?", res => { |
|||
if (res) { |
|||
this.clearData() |
|||
this.openFg(); |
|||
} |
|||
|
|||
}) |
|||
}, |
|||
clearData() { |
|||
this.dataContent = null |
|||
this.showList = [] |
|||
this.allList = [] |
|||
this.index = 1; |
|||
}, |
|||
|
|||
openScanPopup() { |
|||
var itemCode = this.dataContent.itemCode |
|||
console.log("物料", itemCode) |
|||
this.$refs.scanPopup.openScanPopup(itemCode); |
|||
}, |
|||
getScanResult(result) { |
|||
let that = this; |
|||
//TODO缺少零件号的对应关系 |
|||
//查询mes码是否完工 |
|||
isCheckMesCode(result.content).then(res => { |
|||
if (res.data) { |
|||
if (that.dataContent) { |
|||
|
|||
var itemIndex = this.allList.findIndex(r => |
|||
r.itemCode == result.itemCode && |
|||
r.order == result.order); |
|||
//不存在 |
|||
if (itemIndex == -1) { |
|||
// if (this.allList.length > this.dataContent.packQty) { |
|||
// this.showErrorMessage("唯一码数量不能大于计划数量") |
|||
// return; |
|||
// } |
|||
result.countTime = new Date(); |
|||
this.allList.push(result); |
|||
this.allList.sort(compare('countTime')); //按扫描信息排序 |
|||
this.initList() |
|||
this.scanPopupGetFocus(); |
|||
this.calcFgQty(); |
|||
} else { |
|||
this.$refs.comMessage.showQuestionMessage("唯一码【" + result.content + |
|||
'】已经扫描,是否移除', |
|||
res => { |
|||
if (res) { |
|||
this.allList.splice(itemIndex, 1) |
|||
this.allList.sort(compare('countTime')); //按扫描信息排序 |
|||
this.initList() |
|||
that.calcFgQty(); |
|||
} |
|||
}) |
|||
} |
|||
} |
|||
} |
|||
}).catch(error => { |
|||
this.showErrorMessage(error) |
|||
}) |
|||
|
|||
}, |
|||
|
|||
calcFgQty() { |
|||
this.dataContent.handleQty = this.allList.length; |
|||
if (this.dataContent.handleQty == this.dataContent.packQty) { |
|||
if (this.$refs.scanPopup) { |
|||
this.$refs.scanPopup.closeScanPopup(); |
|||
} |
|||
this.commit() |
|||
} |
|||
}, |
|||
|
|||
scanPopupGetFocus() { |
|||
if (this.$refs.scanPopup) { |
|||
this.$refs.scanPopup.getfocus(); |
|||
} |
|||
}, |
|||
scanPopupLoseFocus() { |
|||
if (this.$refs.scanPopup) { |
|||
this.$refs.scanPopup.losefocus(); |
|||
} |
|||
}, |
|||
|
|||
showCommitSuccessMessage(hint, pointData) { |
|||
this.$refs.comMessage.showSuccessMessage(hint, res => { |
|||
if (pointData.length > 0) { |
|||
uni.navigateTo({ |
|||
url: `/pages/point/index?points=${JSON.stringify(pointData)}` |
|||
}); |
|||
} |
|||
|
|||
}) |
|||
}, |
|||
|
|||
|
|||
showErrorMessage(message) { |
|||
this.$refs.comMessage.showErrorMessage(message, res => { |
|||
if (res) { |
|||
this.scanPopupGetFocus() |
|||
} |
|||
}); |
|||
} |
|||
|
|||
} |
|||
|
|||
} |
|||
</script> |
|||
|
|||
<style> |
|||
<style scoped lang="scss"> |
|||
page { |
|||
width: 100%; |
|||
height: 100%; |
|||
background-color: #fff; |
|||
} |
|||
|
|||
.page-wraper { |
|||
display: flex; |
|||
flex-direction: column; |
|||
width: 100%; |
|||
height: 100%; |
|||
} |
|||
|
|||
.header { |
|||
position: fixed; |
|||
/* #ifdef H5 */ |
|||
top: 88rpx; |
|||
/* #endif */ |
|||
left: 0; |
|||
width: 100%; |
|||
background-color: #fff; |
|||
z-index: 10; |
|||
padding: 10rpx; |
|||
/* 确保头部在内容之上 */ |
|||
} |
|||
|
|||
.page-footer { |
|||
position: fixed; |
|||
bottom: 0; |
|||
left: 0; |
|||
right: 0; |
|||
} |
|||
|
|||
|
|||
.page-main { |
|||
flex: 1; |
|||
position: relative; |
|||
} |
|||
|
|||
.page-main-scroll { |
|||
position: absolute; |
|||
left: 0; |
|||
right: 0; |
|||
top: 0; |
|||
bottom: 0; |
|||
} |
|||
|
|||
.page-main-list { |
|||
/* height: 80rpx; |
|||
line-height: 80rpx; */ |
|||
text-align: center; |
|||
background: #e0e0e0; |
|||
|
|||
} |
|||
|
|||
.item { |
|||
background-color: #fff; |
|||
} |
|||
|
|||
.item_scaned { |
|||
background-color: antiquewhite; |
|||
} |
|||
|
|||
.auto-wrap { |
|||
white-space: normal; |
|||
word-break: break-all; |
|||
overflow-wrap: break-word; |
|||
/* 对于兼容性更好的情况 */ |
|||
} |
|||
</style> |
Loading…
Reference in new issue