<template>
|
<div class="scan-container">
|
<el-card class="scan-card">
|
<div slot="header" class="clearfix">
|
<span>无单收货</span>
|
</div>
|
<el-form ref="form" :model="formData" label-width="120px" class="scan-form">
|
<!-- <el-form-item label="仓库名称">
|
<el-select v-model="formData.storage_Id" placeholder="请选择仓库" class="input-300" @change="getPositionName()">
|
<el-option v-for="item in storageNames" :key="item.storage_Id" :label="item.storageName" :value="item.storage_Id"></el-option>
|
</el-select>
|
</el-form-item> -->
|
<el-form-item label="移动类型">
|
<el-select v-model="moveType" placeholder="请选择移动类型" class="input-300">
|
<el-option v-for="item in moveTypeData" :key="item.value" :label="item.label" :value="item.value">
|
</el-option>
|
</el-select>
|
<el-checkbox v-model="isChecked" @change="changeAutoPrint">自动打印</el-checkbox>
|
<el-checkbox v-model="isChecked_PrintForInStore" @change="changeAutoPrint_PrintForInStore">入库口打印机</el-checkbox>
|
<el-checkbox v-model="isChecked_PrintForOutStore" @change="changeAutoPrint_PrintForOutStore">出库口打印机</el-checkbox>
|
</el-form-item>
|
<el-form-item label="转入仓">
|
<el-select v-model="toPlace" placeholder="请选择移转入仓" class="input-300" @change="getToPlace()" clearable>
|
<el-option v-for="item in toPlaceData" :key="item.value" :label="item.label" :value="item.value">
|
</el-option>
|
</el-select>
|
<span class="sub-item">
|
<span class="sub-label">打印份数:</span>
|
<el-input-number v-model="printQty" :min="0" class="input-100" controls-position="right"></el-input-number>
|
</span>
|
</el-form-item>
|
<el-form-item label="转出仓">
|
<el-select v-model="fromPlace" placeholder="请选择移转出仓" class="input-300" @change="getFromPlace()" clearable>
|
<el-option v-for="item in toPlaceData" :key="item.value" :label="item.label" :value="item.value">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="跟踪号">
|
<el-input ref="trackingNumber" v-model="formData.trackingNumber" placeholder="请录入跟踪单号" class="input-300" @change="getTrackingNumber"></el-input>
|
</el-form-item>
|
<!-- <el-form-item label="销售单号">
|
<el-input ref="saleCode" v-model="formData.saleCode" placeholder="请录入销售单号" class="input-300" autofocus @keyup.native.enter.stop="getData"></el-input>
|
</el-form-item> -->
|
<el-form-item label="物料编号">
|
<!-- <el-select v-model="formData.product_Id" filterable placeholder="选择物料号" class="input-300" @change="getProductInfo()">
|
<el-option v-for="item in productList" :key="item.product_Id" :label="item.productCode" :value="item.product_Id">
|
<span style="float: left">{{ item.productCode }}</span>
|
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.productName }}</span>
|
</el-option>
|
</el-select> -->
|
|
<el-select v-model="formData.product_Id" :remote-method="remoteMethod" filterable clearable remote reserve-keyword placeholder="选择物料号" class="input-300" @change="getProductInfo">
|
<el-option v-for="item in productList" :key="item.product_Id" :label="item.productCode" :value="item.product_Id">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="托盘号">
|
<el-input ref="plateCode" v-model="formData.plateCode" autofocus class="input-300" @keyup.native.enter.stop="getPlateData"></el-input>
|
<el-tag type="danger">注意:输入托盘号后回车,用于获取当前托盘中的所有物料,作为拼盘使用!</el-tag>
|
</el-form-item>
|
<el-form-item>
|
<el-button type="primary" @click="saveCheck">确认</el-button>
|
<el-button @click="onReset">重置</el-button>
|
</el-form-item>
|
</el-form>
|
</el-card>
|
<el-card class="scan-card body-no-padding">
|
<div slot="header" class="clearfix">
|
<span class="padding-top-10">无单收货明细</span>
|
<el-button type="text" class="floatRight" @click="setting.visible=true">字段设置</el-button>
|
</div>
|
<el-table ref="scan-table" :data="tableData" :row-class-name="rowClass" stripe style="width: 100%" class="scan-table" @row-dblclick="setCurrent">
|
<template v-for="(item, index) in setting.fields">
|
<template v-if="'positionName,scanWeight,purchasePrice,batchNumber'.indexOf(item.prop)>=0">
|
<el-table-column v-if="item.visible" :key="index" :prop="item.prop" :label="item.label" :width="item.width">
|
<template slot-scope="scope">
|
<template>
|
<el-input v-model="scope.row[item.prop]" size="mini" class="w-100pc"></el-input>
|
</template>
|
</template>
|
</el-table-column>
|
</template>
|
<template v-else-if="'produceDate,limitDate'.indexOf(item.prop)>=0">
|
<el-table-column v-if="item.visible" :key="index" :prop="item.prop" :label="item.label" :width="item.width">
|
<template slot-scope="scope">
|
<template>
|
<el-date-picker v-model="scope.row[item.prop]" size="mini" type="date" placeholder="选择日期" class="w-110" value-format="yyyy-MM-dd" format="yyyy-MM-dd">
|
</el-date-picker>
|
</template>
|
</template>
|
</el-table-column>
|
</template>
|
<template v-else-if="'productBarCode'.indexOf(item.prop)>=0">
|
<el-table-column v-if="item.visible" :key="index" :prop="item.prop" :label="item.label" :width="item.width">
|
<template slot-scope="scope">
|
<template>
|
<el-input v-model="scope.row[item.prop]" size="mini" placeholder="请输入内容"></el-input>
|
</template>
|
</template>
|
</el-table-column>
|
</template>
|
<template v-else-if="'toPlace,fromPlace,extendField04,unitConvert'.indexOf(item.prop)>=0">
|
<el-table-column v-if="item.visible" :key="index" :prop="item.prop" :label="item.label" :width="item.width">
|
<template slot-scope="scope">
|
<template>
|
<el-input v-model="scope.row[item.prop]" size="mini" placeholder="请输入内容"></el-input>
|
</template>
|
</template>
|
</el-table-column>
|
</template>
|
<template v-else-if="'finishedQuantity'.indexOf(item.prop)>=0">
|
<el-table-column v-if="item.visible" :key="index" :prop="item.prop" :label="item.label" :width="item.width">
|
<template slot-scope="{row}">
|
<template>
|
<el-input-number v-model.number="row[item.prop]" :min="0" type="number" size="mini" class="w-100pc" @change="qtyChange(row, item.prop, index)" />
|
</template>
|
</template>
|
</el-table-column>
|
</template>
|
<template v-else>
|
<el-table-column v-if="item.visible" :key="index" :prop="item.prop" :label="item.label" :width="item.width">
|
</el-table-column>
|
</template>
|
</template>
|
<el-table-column fixed="right" label="操作" width="100">
|
<template slot-scope="scope">
|
<el-button type="text" size="small" @click="deleteRow(scope.row, scope.$index)">删除</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
</el-card>
|
|
<el-dialog :visible.sync="dialogVisible" title="选择SKU" width="700px">
|
<template>
|
<el-table :data="findProductList" class="scan-table" style="width: 100%" @row-click="rowClick" @row-dblclick="(row, column, event)=>{changeProduct(row)}">
|
<el-table-column prop="productCode" label="物料编号" width="180">
|
</el-table-column>
|
<el-table-column prop="productModel" label="条码" width="180">
|
</el-table-column>
|
<el-table-column prop="productName" label="物料名称">
|
</el-table-column>
|
<el-table-column prop="productSpec" label="物料规格">
|
</el-table-column>
|
</el-table>
|
</template>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="dialogVisible = false">取 消</el-button>
|
<el-button type="primary" @click="changeProduct(multiProductSelected)">确 定</el-button>
|
</span>
|
</el-dialog>
|
<scan-setting-dialog ref="setting-dialog" :visible.sync="setting.visible" :fields="setting.fields" :name="setting.name">
|
</scan-setting-dialog>
|
|
<!--声音文件-->
|
<audio ref="sound_error" controls="controls" style="display:none;">
|
<source src="@/assets/sounds/error2.mp3" type="audio/mpeg" />
|
</audio>
|
<audio ref="sound_correct" controls="controls" style="display:none;">
|
<source src="@/assets/sounds/feixin.mp3" type="audio/mpeg" />
|
</audio>
|
<audio controls="controls" style="display:none;">
|
<source ref="sound_scan" src="@/assets/sounds/saomiao.wav" type="audio/mpeg" />
|
</audio>
|
|
</div>
|
</template>
|
|
<script>
|
import YrtScanMixins from '@/components/common/yrtScanMixins.vue'
|
import ScanSettingDialog from '@/components/common/components/scanSettingDialog.vue'
|
var moment = require('moment')
|
|
export default {
|
name: 'scan-purchase-noBillscan',
|
components: {
|
ScanSettingDialog
|
},
|
mixins: [YrtScanMixins],
|
data() {
|
return {
|
moveTypeData: [
|
{
|
value: '0',
|
label: '无'
|
},
|
{
|
value: '202',
|
label: '从成本中心退料202'
|
},
|
{
|
value: '232',
|
label: '从销售订单中退料232'
|
},
|
{
|
value: '311(1)',
|
label: '移库311(E)平库至立库'
|
},
|
{
|
value: '262',
|
label: '从生产订单中退料262'
|
}
|
],
|
moveType: '0',
|
isChecked: true,
|
isChecked_PrintForInStore:true,//是否选中 入库口打印机
|
isChecked_PrintForOutStore:false,// 是否选中 出库口打印机
|
printQty: 1,
|
|
toPlaceData: [
|
{
|
value: 'G021',
|
label: 'G021'
|
},
|
{
|
value: 'G022',
|
label: 'G022'
|
},
|
{
|
value: 'G023',
|
label: 'G023'
|
},
|
{
|
value: 'G024',
|
label: 'G024'
|
},
|
{
|
value: 'G025',
|
label: 'G025'
|
},
|
{
|
value: 'G028',
|
label: 'G028'
|
},
|
{
|
value: 'G044',
|
label: 'G044'
|
}
|
],
|
//清空默认值 【EditBy shaocx,2022-10-22】
|
//toPlace: 'G021',
|
//fromPlace: 'G028',
|
toPlace: '',
|
fromPlace: '',
|
formData: {
|
// 仓库ID
|
storage_Id: 87,
|
storageName: '立体库',
|
positionName: '收货暂存区', // 货位id
|
consignor_Id: 30,
|
consignorCode: 'GX30',
|
consignorName: '广州西门子',
|
productModel: null,
|
scanQty: null,
|
provider_Id: '',
|
providerCode: '',
|
providerShortName: ''
|
},
|
tableDataSKU: [{}],
|
positionName: '收货暂存区',
|
// 供应商
|
providerShortNames: null,
|
// 货主
|
consignorNames: null,
|
// 仓库
|
storageNames: null,
|
productList: [],
|
ALLproductList: [],
|
// 收货位候选项
|
positionList: [],
|
// 是否展示SKU
|
showProduct: false,
|
dialogVisible: false,
|
// SKU列表
|
findProductList: [],
|
// 明细数据
|
tableData: [],
|
|
// 仓库信息
|
storageInfo: {},
|
|
// 当前正在扫描的数据 {}
|
currentRow: null,
|
// 已经找到的数据
|
existRows: [],
|
// 装箱方式:0:常规扫描,1:一品一箱,2:多品一箱
|
caseMode: 0,
|
// 是否弹出一码多拍
|
isCount: false,
|
// 一次扫描的数量
|
scanCount: 1,
|
// 装箱新增行
|
caseNewRows: [],
|
// 配置参数
|
config: {
|
// 自动生成上架单
|
in_generateShelve: true,
|
// 是否启用装箱操作
|
in_caseNumber: false,
|
// 支持一品多码
|
sku_productToMultiBarcode: true,
|
caseMode: 0
|
},
|
// 多个物料时需要选择一个物料
|
multiProductSelected: {},
|
// 扫描列设置对话框参数
|
setting: {
|
visible: false,
|
name: 'scan-purchase-noBillscan',
|
fields: [
|
{
|
prop: 'extendField04',
|
label: '跟踪号',
|
visible: true,
|
width: 170,
|
order: 1
|
},
|
{
|
prop: 'productCode',
|
label: '物料编码',
|
visible: true,
|
width: 170,
|
order: 1
|
},
|
{
|
prop: 'productName',
|
label: '物料名称',
|
visible: true,
|
width: 175,
|
order: 2
|
},
|
{
|
prop: 'productSpec',
|
label: '物料规格',
|
visible: true,
|
width: 80,
|
order: 12
|
},
|
// ,
|
// {
|
// prop: "bigUnit",
|
// label: "采购单位",
|
// visible: true,
|
// width: 90,
|
// order: 4
|
// }
|
{
|
prop: 'finishedQuantity',
|
label: '本次收货数量',
|
visible: true,
|
width: 130,
|
order: 6
|
},
|
{
|
prop: 'limitDate',
|
label: '限用日期',
|
visible: true,
|
width: 120,
|
order: 7
|
},
|
{
|
prop: 'quantity',
|
label: '库存单位收货数量',
|
visible: true,
|
width: 160,
|
order: 10
|
},
|
{
|
prop: 'smallUnit',
|
label: '库存单位',
|
visible: true,
|
width: 80,
|
order: 11
|
},
|
{
|
prop: 'unitConvert',
|
label: '换算关系',
|
visible: true,
|
width: 80,
|
order: 12
|
},
|
{
|
prop: 'toPlace',
|
label: '转入仓',
|
visible: true,
|
width: 80,
|
order: 11
|
},
|
{
|
prop: 'fromPlace',
|
label: '转出仓',
|
visible: true,
|
width: 80,
|
order: 12
|
},
|
{
|
prop: 'positionName',
|
label: '货位',
|
visible: false,
|
width: 80,
|
order: 12
|
}
|
]
|
}
|
}
|
},
|
// 监听数据
|
watch: {
|
// 当前行扫描数据改变后,将扫描数量也改变
|
currentRow: {
|
handler: function(rowData) {
|
this.formData.scanQty = rowData.finishedQuantity
|
},
|
deep: true
|
}
|
},
|
mounted() {
|
this.getStorageList()
|
this.getProductList()
|
this.getConsignorList()
|
this.getProvider()
|
// 字段设置
|
const setting = localStorage[this.setting.name + '-setting']
|
if (setting) {
|
this.setting.fields = JSON.parse(setting)
|
}
|
},
|
methods: {
|
//自动打印checkbox选中事件
|
changeAutoPrint(){
|
if(this.isChecked){
|
this.isChecked_PrintForInStore=true
|
this.isChecked_PrintForOutStore=false
|
}else{
|
this.isChecked_PrintForInStore=false
|
this.isChecked_PrintForOutStore=false
|
}
|
},
|
changeAutoPrint_PrintForInStore(){
|
if(this.isChecked_PrintForInStore){
|
this.isChecked_PrintForOutStore=false
|
}else{
|
this.isChecked_PrintForOutStore=true
|
}
|
},
|
changeAutoPrint_PrintForOutStore(){
|
if(this.isChecked_PrintForOutStore){
|
this.isChecked_PrintForInStore=false
|
}else{
|
this.isChecked_PrintForInStore=true
|
}
|
},
|
// 获取供应商列表
|
getProvider() {
|
const url = '/api/basicInfo/base/provider/getList'
|
const params = {
|
openNodeApi: true
|
}
|
var callback = res => {
|
if (res.result) {
|
this.providerShortNames = res.data
|
}
|
}
|
this.common.ajax(url, params, callback, true)
|
},
|
|
// 获取仓库
|
getStorageList() {
|
const url = '/api/basicInfo/base/storage/getList'
|
const params = {}
|
var callback = res => {
|
if (res.result) {
|
debugger
|
this.storageNames = res.data
|
}
|
}
|
this.common.ajax(url, params, callback, true)
|
},
|
// 获取物料
|
getProductList() {
|
const url = '/api/basicInfo/base/productInfo/getProductList'
|
const params = {}
|
var callback = res => {
|
if (res.result) {
|
debugger
|
this.productList = res.data
|
}
|
}
|
this.common.ajax(url, params, callback, true)
|
},
|
// 获取货主名称下拉框
|
getConsignorList() {
|
const url = '/api/basicInfo/base/consignor/getList'
|
const params = {}
|
var callback = res => {
|
if (res.result) {
|
this.consignorNames = res.data
|
}
|
}
|
this.common.ajax(url, params, callback, true)
|
},
|
// 根据仓库获取货位
|
getPositionName() {
|
var url = '/api/inbound/inScan/getPosition'
|
// 仓库
|
for (var index3 in this.storageNames) {
|
if (this.storageNames[index3].storage_Id === this.formData.storage_Id) {
|
this.formData.storage_Id = this.storageNames[index3].storage_Id
|
this.formData.storageName = this.storageNames[index3].storageName
|
}
|
}
|
|
for (var index in this.consignorNames) {
|
if (this.consignorNames[index].consignor_Id === this.formData.consignor_Id) {
|
this.formData.consignorCode = this.consignorNames[index].consignorCode
|
this.formData.consignorName = this.consignorNames[index].consignorName
|
}
|
}
|
|
for (var index2 in this.providerShortNames) {
|
if (this.providerShortNames[index2].provider_Id === this.formData.provider_Id) {
|
this.formData.providerCode = this.providerShortNames[index2].providerCode
|
this.formData.providerShortName = this.providerShortNames[index2].providerShortName
|
}
|
}
|
var params = {
|
openNodeApi: true,
|
storage_Id: this.formData.storage_Id
|
}
|
this.common.ajax(
|
url,
|
params,
|
res => {
|
if (res.result) {
|
this.storageInfo = res.data
|
this.positionList = res.dynamic
|
if (this.positionList.length) {
|
this.formData.positionName = this.positionList[0].positionName
|
}
|
} else {
|
this.storageInfo = {}
|
this.positionList = []
|
}
|
// 条码框获得焦点
|
// this.$refs.productModel.focus();
|
this.$refs.productModel.select()
|
},
|
true
|
)
|
},
|
// 判断扫描包装条码
|
checkPackingBarcode(evt) {
|
this.checkPackingProductModel(this.tableData, null, this.getProductInfo)
|
},
|
// 获取物料信息
|
getProductInfo() {
|
var product_Id = this.formData.product_Id // masterData.productModel;
|
// if (!productModel) {
|
// this.$message({
|
// message: "条码不能为空!",
|
// type: "warning"
|
// });
|
// return;
|
// }
|
var url = '/api/basicInfo/base/productInfo/find'
|
var params = {
|
openNodeApi: true,
|
product_Id: product_Id
|
}
|
this.common.ajax(
|
url,
|
params,
|
res => {
|
this.common.showMsg(res)
|
if (res.result) {
|
this.findProductList = []
|
for (var index in res.data) {
|
this.$set(this.findProductList, this.findProductList.length, res.data[index])
|
debugger
|
if (res.data.length === 1) {
|
this.changeProduct(res.data[0].product_Id, res.data[0].productName)
|
}
|
}
|
// this.focus("productModel");
|
} else {
|
this.$refs.sound_error.play() // 播放声音
|
}
|
},
|
true
|
)
|
},
|
// 选中行
|
rowClick(row, column, event) {
|
this.multiProductSelected = row
|
},
|
// 选择物料
|
changeProduct(row, column, event) {
|
this.dialogVisible = false
|
var positionName = this.positionName
|
// var productModel = this.formData.productModel;
|
var count = 1
|
if (this.isCount) {
|
for (var index in this.findProductList) {
|
if (this.findProductList[index].product_Id === row.product_Id) {
|
this.currentRow = this.findProductList[index]
|
break
|
}
|
}
|
} else {
|
for (var index1 in this.findProductList) {
|
if (this.findProductList[index1].product_Id === row) {
|
this.currentRow = this.findProductList[index1]
|
}
|
}
|
}
|
|
// if (this.currentRow.middleBarcode === productModel) {
|
// // 中包装条码
|
// count = this.currentRow.middleUnitConvert;
|
// } else if (this.currentRow.bigBarcode === productModel) {
|
// // 大包装条码
|
// count = this.currentRow.unitConvert;
|
// }
|
var limitDate = moment(new Date())
|
.add(1, 'years')
|
.format('YYYY-MM-DD')
|
|
this.$set(this.currentRow, 'positionName', positionName) //货位
|
this.$set(this.currentRow, 'limitDate', limitDate) //限用日期
|
this.$set(this.currentRow, 'finishedQuantity', count) //本次收货数量
|
this.$set(this.currentRow, 'fromPlace', this.fromPlace) //转出仓
|
this.$set(this.currentRow, 'extendField04', this.formData.trackingNumber) //跟踪号
|
this.$set(this.currentRow, 'unitConvert', 1) //换算关系
|
this.$set(this.currentRow, 'toPlace', this.toPlace) //转入仓
|
|
this.$set(this.currentRow, 'quantity', this.currentRow.unitConvert * this.currentRow.finishedQuantity) //库存单位收货数量
|
this.$set(this.currentRow, 'scanWeight', count * this.currentRow.weight)
|
this.$set(this.tableData, this.tableData.length, this.currentRow)
|
this.existRows.push(this.currentRow)
|
this.sortRow()
|
this.showProduct = false
|
},
|
// 获得托盘上的物料明细数据
|
getPlateData() {
|
var _this=this;
|
var plateCode = this.formData.plateCode
|
if (!plateCode) {
|
this.$message.error('托盘号不能为空!')
|
return
|
}
|
// orderPrintCode = orderPrintCode.trim();
|
this.tableData = []
|
this.isChecked=true
|
this.isChecked_PrintForInStore=false
|
this.isChecked_PrintForOutStore=true
|
const url = '/api/outbound/orderJx/getScanData'
|
const params = {
|
plateCode: plateCode,
|
isall: true //加载全部数据 【EditBy shaocx,2022-10-19】
|
}
|
var callback = res => {
|
if (res.result) {
|
this.findProductList = []
|
for (var index in res.data) {
|
var data=new Object();
|
data.product_Id=res.data[index].product_Id;//商品ID
|
//debugger
|
data.extendField04=res.data[index].extendField04;//跟踪号
|
data.productCode=res.data[index].productCode;//物料编码
|
data.productName=res.data[index].productName;//物料名称
|
data.finishedQuantity=res.data[index].productStorage;//当前托盘数量
|
data.productSpec=res.data[index].productSpec;//物料规格
|
data.limitDate=res.data[index].limitDate;//限用日期
|
data.smallUnit=res.data[index].smallUnit;//库存单位
|
data.unitConvert=res.data[index].unitConvert;//换算关系
|
this.$set(this.findProductList, this.findProductList.length, data)
|
|
this.changeProductForPlate(data.product_Id, data)
|
}
|
} else {
|
this.$message.error(res.msg)
|
}
|
}
|
this.common.ajax(url, params, callback, this.$refs['form'])
|
},
|
// 选择物料(有托盘号的情况) 【EditBy shaocx,2022-10-18】
|
changeProductForPlate(row, materialData) {
|
this.dialogVisible = false
|
var positionName = this.positionName
|
// var productModel = this.formData.productModel;
|
var count = 1
|
if (this.isCount) {
|
for (var index in this.findProductList) {
|
if (this.findProductList[index].product_Id === row.product_Id) {
|
this.currentRow = this.findProductList[index]
|
break
|
}
|
}
|
} else {
|
for (var index1 in this.findProductList) {
|
if (this.findProductList[index1].product_Id === row) {
|
this.currentRow = this.findProductList[index1]
|
}
|
}
|
}
|
|
// if (this.currentRow.middleBarcode === productModel) {
|
// // 中包装条码
|
// count = this.currentRow.middleUnitConvert;
|
// } else if (this.currentRow.bigBarcode === productModel) {
|
// // 大包装条码
|
// count = this.currentRow.unitConvert;
|
// }
|
|
this.$set(this.currentRow, 'smallUnit', materialData.smallUnit) //库存单位
|
|
this.$set(this.currentRow, 'positionName', positionName) //货位
|
this.$set(this.currentRow, 'limitDate', materialData.limitDate) //限用日期
|
this.$set(this.currentRow, 'finishedQuantity', materialData.finishedQuantity) //本次收货数量
|
this.$set(this.currentRow, 'fromPlace', this.fromPlace) //转出仓
|
this.$set(this.currentRow, 'extendField04',materialData.extendField04) //跟踪号
|
this.$set(this.currentRow, 'unitConvert',materialData.unitConvert) //换算关系
|
this.$set(this.currentRow, 'toPlace', this.toPlace) //转入仓
|
|
this.$set(this.currentRow, 'quantity', this.currentRow.unitConvert * this.currentRow.finishedQuantity) //库存单位收货数量
|
this.$set(this.currentRow, 'scanWeight', count * this.currentRow.weight)
|
this.$set(this.tableData, this.tableData.length, this.currentRow)
|
this.existRows.push(this.currentRow)
|
this.sortRow()
|
this.showProduct = false
|
},
|
getToPlace() {
|
this.$set(this.currentRow, 'toPlace', this.toPlace)
|
for (var item of this.tableData) {
|
item.toPlace = this.toPlace
|
}
|
this.existRows.push(this.currentRow)
|
},
|
getFromPlace() {
|
this.$set(this.currentRow, 'fromPlace', this.fromPlace)
|
for (var item of this.tableData) {
|
item.fromPlace = this.fromPlace
|
}
|
this.existRows.push(this.currentRow)
|
},
|
remoteMethod(query) {
|
const url = 'api/basicInfo/base/productInfo/getList'
|
const params = { name: query }
|
var callback = res => {
|
if (res.result) {
|
this.ALLproductList = res.data
|
this.productList = res.data
|
}
|
}
|
this.common.ajax(url, params, callback, true)
|
},
|
// getTrackingNumber() {
|
// debugger;
|
// this.$set(this.currentRow, "extendField04", this.formData.trackingNumber);
|
// // for (var item of this.tableData) {
|
// // item.extendField04 = this.formData.trackingNumber;
|
// // }
|
// this.existRows.push(this.currentRow);
|
// },
|
|
// 排序高亮行靠前
|
sortRow() {
|
this.tableData.forEach(element => {
|
element.sortIndex = 0
|
})
|
this.currentRow.sortIndex = 1
|
this.tableData = this.tableData.sort(function(a, b) {
|
return b.sortIndex - a.sortIndex
|
})
|
this.tableData.forEach(element => {
|
element.sortIndex = 0
|
})
|
},
|
// 确认入库
|
saveCheck() {
|
debugger
|
var emptyPositionName = this.tableData.filter(item => item.product_Id && item.finishedQuantity > 0 && !item.positionName)
|
if (emptyPositionName.length) {
|
this.$message.error('[' + emptyPositionName.join(',') + ']货位不能为空!')
|
this.$refs.sound_error.play() // 播放声音
|
return
|
}
|
debugger
|
var dataList = this.tableData.filter(item => item.product_Id && item.quantity > 0).map(item => {
|
return {
|
storage_Id: 87,
|
storageName: '立体库',
|
trackingNumber: this.formData.trackingNumber,
|
saleCode: this.formData.saleCode,
|
providerShortName: this.formData.providerShortName,
|
product_Id: item.product_Id,
|
finishedQuantity: item.finishedQuantity,
|
positionName: item.positionName,
|
produceDate: item.produceDate,
|
purchasePrice: item.purchasePrice,
|
batchNumber: item.batchNumber,
|
productSpec: item.productSpec,
|
plateCode: item.plateCode,
|
weight: item.weight,
|
totalWeight: item.scanWeight,
|
consignor_Id: 30,
|
consignorCode: 'GX30',
|
consignorName: '广州西门子',
|
poCode: this.formData.poCode,
|
quantity: item.quantity,
|
limitDate: item.limitDate,
|
productCode: item.productCode,
|
toPlace: this.toPlace, // 转入仓
|
fromPlace: this.fromPlace, // 转出仓
|
extendField04: item.extendField04 // 跟踪号
|
}
|
})
|
if (this.moveType === '311(1)') {
|
this.moveType = '311'
|
}
|
const detailList = JSON.stringify(
|
dataList.map(m => {
|
return {
|
MaterialCode: m.productCode,
|
Quantity: m.finishedQuantity, // 本次收货量
|
// Plant: m.extendField02, // 工厂
|
MoveType: this.moveType,
|
toPlace: this.toPlace, // 转入仓
|
fromPlace: this.fromPlace, // 转出仓
|
trackingNumber: m.extendField04 || null
|
}
|
})
|
)
|
if (dataList.length <= 0) {
|
this.$message.error('没有扫描可用的数据!')
|
return
|
}
|
//判断取值isChecked [EditBy shaocx,2022-06-21]
|
let _printFlag=1 // 0不打印 1:入库口打印机 2:出库口打印机
|
if(this.isChecked){
|
_printFlag=1 //默认 入库口打印机
|
if(this.isChecked_PrintForOutStore){
|
_printFlag=2 //表示是 出库口打印机
|
}
|
}else{
|
_printFlag=0
|
}
|
var creator = localStorage.getItem("creator") || ''; //创建人
|
var url = '/api/inbound/inScan/purchaseEnterNoBillSave'
|
var params = {
|
creator:creator,
|
dataList: dataList,
|
detailList: detailList,
|
moveType: this.moveType,
|
//isChecked: this.isChecked,
|
isChecked: _printFlag,
|
printQty: this.printQty
|
}
|
debugger
|
this.common.ajax(
|
url,
|
params,
|
res => {
|
this.common.showMsg(res)
|
if (res.result) {
|
this.onReset()
|
this.$refs.sound_correct.play() // 播放声音
|
} else {
|
this.$refs.sound_error.play() // 播放声音
|
}
|
},
|
true
|
)
|
},
|
// 明细数量改变
|
qtyChange(row, prop, index) {
|
if (prop === 'finishedQuantity') {
|
// if (row.receivedQuantity > row.bigQty) {
|
// this.$message.error("数量不可超过PO单位数量");
|
// return;
|
// }
|
row.quantity = Math.Round((row.finishedQuantity || 0) * row.unitConvert)
|
}
|
},
|
onReset() {
|
this.formData = {
|
storage_Id: 87,
|
storageName: '立体库',
|
// positionName: null, // 货位id
|
// consignor_Id: null,
|
// onsignorCode: null,
|
// consignorName: null,
|
productModel: null,
|
scanQty: null,
|
provider_Id: '',
|
providerCode: '',
|
providerShortName: ''
|
}
|
this.toPlace = null
|
this.fromPlace = null
|
this.tableData = []
|
this.moveType = '0'
|
},
|
// 删除明细
|
deleteRow(row, index) {
|
debugger
|
// const arriveQuantity = row.arriveQuantity;
|
// const mainRow = this.tableData.find(item => item.isMain && item.orderList_Id === row.orderList_Id);
|
// mainRow.arriveQuantity += arriveQuantity;
|
// mainRow.unFinishedQuantity += arriveQuantity;
|
this.tableData.splice(index, 1)
|
}
|
}
|
}
|
</script>
|
|
<style lang="scss" scoped>
|
@import '../../../styles/scan.scss';
|
</style>
|
<style lang="css">
|
.row-active {
|
background-color: skyblue !important;
|
}
|
</style>
|