This commit is contained in:
周炼 2024-11-25 17:15:57 +08:00
commit a19a82a7b1
13 changed files with 512 additions and 196 deletions

View File

@ -41,5 +41,12 @@ export function saveValueSet(obj) {
})
}
export function soLineValueSetExists(query) {
return request({
url: nlv_print('/sales-order-line-label-value-config/so-line-value-set-exists'),
method: 'get',
params: query
})
}

View File

@ -0,0 +1,98 @@
import request from '@/router/axios'
export function getSubmitDocumentDetail(obj) {
return request({
url: '/mom-wms/document/detail/getSubmitDocumentDetail',
method: 'get',
params: obj
})
}
export function getCloseDocumentDetail(obj) {
return request({
url: '/mom-wms/document/detail/getCloseDocumentDetail',
method: 'get',
params: obj
})
}
export function getPickDocumentDetail(obj) {
return request({
url: '/mom-wms/document/detail/getPickDocumentDetail',
method: 'get',
params: obj
})
}
export function scanCode(obj) {
return request({
url: '/mom-wms/document/scanCode',
method: 'get',
params: obj
})
}
export function pickingSave(obj) {
return request({
url: '/mom-wms/document/picking/save',
method: 'post',
data: obj
})
}
export function pickingSavecheckingScanAll(obj) {
return request({
url: '/mom-wms/document/picking/save/checkingScanAll',
method: 'post',
data: obj
})
}
export function pickingClean(obj) {
return request({
url: '/mom-wms/document/picking/clean',
method: 'delete',
data: obj
})
}
export function rejectDocument(obj) {
return request({
url: '/mom-wms/document/rejectDocument',
method: 'post',
data: obj
})
}
export function submitDocument(obj) {
return request({
url: '/mom-wms/document/submitDocument',
method: 'post',
data: obj
})
}
export function postIn(obj) {
return request({
url: '/mom-wms/document/postIn',
method: 'post',
data: obj
})
}
export function postOut(obj) {
return request({
url: '/mom-wms/document/postOut',
method: 'post',
data: obj
})
}
export function postTransfer(obj) {
return request({
url: '/mom-wms/document/postTransfer',
method: 'post',
data: obj
})
}

View File

@ -229,7 +229,7 @@ import { isBlank } from '@/util/string'
import { copyJSON } from '@/util/util'
import { initForm, initFieldSetForm, initQueryParam } from '@/views/mes/print/customer-label/init'
import { renderSpecNameHeader } from '@/components/table-header-pop/render'
import {fetchList, listSoLineLabelValueSet, getConfigLabelTemplate} from '@/api/mes/print/sales-order-line-label-value-config'
import {fetchList, listSoLineLabelValueSet, getConfigLabelTemplate, soLineValueSetExists} from '@/api/mes/print/sales-order-line-label-value-config'
import {fetchList as fetchSalesOrderList} from '@/api/mes/prd/sales-order'
import {remote} from '@/api/admin/dict'
import {showLoading, hideLoading} from "@/const/loading";
@ -365,9 +365,18 @@ export default {
}, 100)
},
handleSetValue(row) {
setTimeout(() => {
let soLineRow = this.currentRow
let param = {
soNumber: soLineRow.soNumber,
soLineId: soLineRow.soLineId
}
showLoading()
soLineValueSetExists(param).then((response) => {
hideLoading()
if(response.data.data && response.data.data.configItem !== soLineRow.configItem) {
return this.$message.warning("当前订单行已在标签样式[" + this.formatConfigItem(response.data.data.configItem) + "]中配置过值集")
}
this.fieldValueSetDialogVisible = true
let soLineRow = this.currentRow
this.fieldValueSetForm = copyJSON(row)
this.fieldValueSetForm.soNumber = soLineRow.soNumber
this.fieldValueSetForm.soLineId = soLineRow.soLineId
@ -375,7 +384,10 @@ export default {
this.fieldValueSetForm.salesOrderLineBo = soLineRow.salesOrderLineBo
this.fieldValueSetForm.configItem = soLineRow.configItem
this.fieldValueSetForm.labelTempleCode = soLineRow.labelTempleCode
}, 100)
})
.catch(() => {
hideLoading()
})
},
updateSoLineTemplate(row) {
for(let i = 0; i < this.tableData.length; i++) {

View File

@ -34,7 +34,7 @@
<el-form ref="formObj" :rules="rules" :model="formObj" label-width="100px">
<el-row :gutter="24">
<el-col :span="8">
<el-form-item label="工厂代码:" prop="fabNo">
<el-form-item label="车间代码:" prop="fabNo">
<el-input v-model="formObj.fabNo">
<i slot="suffix" class="el-input__icon el-icon-search" @click.stop="showFabNoDialog()"></i>
</el-input>
@ -76,7 +76,7 @@
<el-input size="mini" v-model="scope.row.customerCode" :disabled="!scope.row.editable" @change="setRowModified(scope.row)"></el-input>
</template>
</el-table-column>
<el-table-column prop="fabNo" label="工厂代码" align="center">
<el-table-column prop="fabNo" label="车间代码" align="center">
<template slot-scope="scope">
<el-input v-model="scope.row.fabNo" :disabled="!scope.row.editable" @change="setRowModified(scope.row)">
<i
@ -125,18 +125,21 @@
<div style="height: 40px"></div>
<el-button type="primary" @click="doAddPageConfig()">新增</el-button>
<el-row>
<el-col :span="9">
<el-col :span="7">
<span style="text-align: center;display:block;">标签类别</span>
</el-col>
<el-col :span="9">
<el-col :span="7">
<span style="text-align: center;display:block;">标签模板</span>
</el-col>
<el-col :span="6">
<span style="text-align: center;display:block;">打印场景</span>
</el-col>
<el-col :span="4">
<span style="text-align: center;display:block;">打印次数</span>
</el-col>
</el-row>
<el-row v-for="(pageItem, index) in printPageList" :key="index">
<el-col :span="9">
<el-col :span="7">
<div style="text-align: center;display:block;">
<el-select v-model="pageItem.labelCategory" @change="handleLabelCategoryChange(pageItem)">
<el-option v-for="item in templateCategoryList" :key="item.LABEL_CATEGORY_ID"
@ -144,7 +147,7 @@
</el-select>
</div>
</el-col>
<el-col :span="9">
<el-col :span="7">
<div style="text-align: center;display:block;">
<el-input v-model="pageItem.templateCode" :readOnly="true">
<i slot="suffix" class="el-input__icon el-icon-search"
@ -153,6 +156,16 @@
</div>
</el-col>
<el-col :span="6">
<div style="text-align: center;display:block;">
<el-select placeHolder="请选择" v-model="pageItem.printScenario">
<el-option key="operation" label="工序打印" value="operation"/>
<el-option key="barcode" label="条码补打印" value="barcode"/>
<el-option key="package" label="包装批次打印" value="package"/>
<el-option key="tool" label="物流载具打印" value="tool"/>
</el-select>
</div>
</el-col>
<el-col :span="4">
<div style="text-align: center;display:flex;">
<el-select v-model="pageItem.printPages" placeholder="1">
<el-option key="1" label="1" value="1"/>
@ -292,6 +305,7 @@ export default {
this.printPageList.push({
labelCategory: '',
templateCode: '',
printScenario: '',
printPages: '1'
});
this.$forceUpdate();
@ -387,8 +401,11 @@ export default {
if(isBlank(operation)) {
return me.$message.error("第" + (i + 1) + "行工序不能为空");
}
if(isBlank(fabNo)) {
return me.$message.error("第" + (i + 1) + "行车间代码不能为空");
}
if(isBlank(key)) {
return me.$message.error("第" + (i + 1) + "行客户代码,工厂代码,工序不能同时为空");
return me.$message.error("第" + (i + 1) + "行客户代码,车间代码,工序不能同时为空");
}
if (i > 0) {
for (let j = 0; j < i; j++) {
@ -404,7 +421,10 @@ export default {
if ((!record.printPageList || record.printPageList.length === 0) && record.status === "Y") {
return me.$message.error("客户编码" + record.customerCode + "没有维护一条以上的规则,规则状态不可为启用");
}
let handle = "PrintRuleBO:" + me.formObj.site + "," + record.customerCode;
let handle = "PrintRuleBO:" + me.formObj.site;
if(!isBlank(record.customerCode)) {
handle = handle + "," + record.customerCode
}
if(!isBlank(fabNo)) {
handle = handle + "," + fabNo
}
@ -452,7 +472,10 @@ export default {
let param = [];
for (var m = 0; m < me.multipleSelection.length; m++) {
let record = me.multipleSelection[m];
let handle = "PrintRuleBO:" + me.formObj.site + "," + record.customerCode;
let handle = "PrintRuleBO:" + me.formObj.site;
if(!isBlank(record.customerCode)) {
handle = handle + "," + record.customerCode
}
if(!isBlank(record.fabNo)) {
handle = handle + "," + record.fabNo
}
@ -517,10 +540,10 @@ export default {
if(isBlank(record.labelCategory) && isBlank(record.templateCode)) {
return me.$message.error("第" + (i + 1) + "行标签类别和模板不能全部为空");
}
// 判断标签类别+模板是否重复
// 判断标签类别+模板+场景是否重复
for(let j = 0; j < me.printPageList.length; j++) {
if(i !== j) {
if(record.labelCategory === me.printPageList[j].labelCategory && record.templateCode === me.printPageList[j].templateCode) {
if(record.labelCategory === me.printPageList[j].labelCategory && record.templateCode === me.printPageList[j].templateCode && record.printScenario === me.printPageList[j].printScenario) {
return me.$message.error("第" + (i + 1) + "行标签类别+模板重复");
}
}

View File

@ -43,10 +43,10 @@
<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<el-form-item label="打印场景:" prop="printScenario">
<el-select placeHolder="请选择" v-model="formObj.printScenario">
<el-option key="工序打印-operation" label="工序打印" value="工序打印-operation"/>
<el-option key="条码补打印-barcode" label="条码补打印" value="条码补打印-barcode"/>
<el-option key="包装批次打印-package" label="包装批次打印" value="包装批次打印-package"/>
<el-option key="物流载具打印-tool" label="物流载具打印" value="物流载具打印-tool"/>
<el-option key="operation" label="工序打印" value="operation"/>
<el-option key="barcode" label="条码补打印" value="barcode"/>
<el-option key="package" label="包装批次打印" value="package"/>
<el-option key="tool" label="物流载具打印" value="tool"/>
</el-select>
</el-form-item>
</el-col>

View File

@ -145,31 +145,120 @@
' 其他字串\n' +
' 若是空字符串,此处填写EMPTY',
region: '{\n' +
' "dateTime": "2021-09-02 03:59:50",\n' +
' "shopOrder": "X921H1DM020",\n' +
' "item": "D1120343101",\n' +
' "site": "1000",\n' +
' "barcodeNumber": "P100020210902-0004",\n' +
' "shopOrderData": {\n' +
' "handle": "ShopOrderBO:1000,X921H1DM020",\n' +
' "itemBo": "ItemBO:1000,D1120343101,1.0",\n' +
' "qtyDone": 0,\n' +
' "qtyOrdered": 1000,\n' +
' "qtyReleased": 4,\n' +
' "qtyScrapped": 0,\n' +
' "qtyToBuild": 1000,\n' +
' "releasedDate": "2021-09-02T10:55:20",\n' +
' "statusBo": "StatusBO:1000,501"\n' +
' },\n' +
' "barcodeType": "CP",\n' +
' "shopOrderCustomData": {\n' +
' "shippingCustomer": "HW01"\n' +
' },\n' +
' "user": "SITE_ADMIN",\n' +
' "itemCustomData": {\n' +
' "itemModel": "ST173XX002BKF",\n' +
' "packageCapacity": "2"\n' +
' }\n' +
' "externalLabelFlag": "Y",\n' +
' "dateTime": "2024-11-25 04:35:31",\n' +
' "shopOrder": "20241109002",\n' +
' "fabNo": "FQCJ",\n' +
' "resource": "FQ001",\n' +
' "shopOrderData": {\n' +
' "bomBo": "BOMBO:2031,20241109002,H,1.0",\n' +
' "creator": "liaohechuan",\n' +
' "dateCreate": "2024-11-09T18:03:43",\n' +
' "handle": "ShopOrderBO:2031,20241109002",\n' +
' "itemBo": "ItemBO:2031,ITEM01,A",\n' +
' "originalStatusBo": "StatusBO:2031,RELEASABLE,SHOP_ORDER",\n' +
' "plannedBomBo": "BOMBO:2031,20241109002,H,1.0",\n' +
' "plannedItemBo": "ItemBO:2031,ITEM01,A",\n' +
' "plannedRouterBo": "RouterBO:2031,LHCCS01,0,A",\n' +
' "plannedWorkCenterBo": "WorkCenterBO:2031,20311003",\n' +
' "priority": 999,\n' +
' "qty": 999.000000,\n' +
' "qtyDone": 0.000000,\n' +
' "qtyReleased": 42.000000,\n' +
' "qtyScrapped": 0.000000,\n' +
' "routerBo": "RouterBO:2031,LHCCS01,0,A",\n' +
' "shopOrder": "20241109002",\n' +
' "shopOrderType": "0",\n' +
' "site": "2031",\n' +
' "statusBo": "StatusBO:2031,RELEASABLE,SHOP_ORDER",\n' +
' "updater": "syngna",\n' +
' "version": 1\n' +
' },\n' +
' "shopOrderCustomData": {\n' +
' "zctZbk": "1",\n' +
' "zctFwt": "1",\n' +
' "orderType": "1",\n' +
' "sepcOrder": "1",\n' +
' "zctWl": "1",\n' +
' "zctBz": "1",\n' +
' "zctCd": "1",\n' +
' "zctZxxg": "1",\n' +
' "zctKh": "1",\n' +
' "zctCb": "1",\n' +
' "zctXsbgs": "1",\n' +
' "zctPmys": "1",\n' +
' "zctZxbqys": "1",\n' +
' "zctTpsm": "1",\n' +
' "zctWxbqys": "1",\n' +
' "customerTemplateCode": "C01",\n' +
' "zctGx": "1",\n' +
' "zctXl": "1",\n' +
' "ext5": "1",\n' +
' "ext4": "1",\n' +
' "bigOrder": "1",\n' +
' "ext3": "1",\n' +
' "zctTd": "1",\n' +
' "ext2": "1",\n' +
' "saleOrder": "SO01",\n' +
' "zctHjt": "1",\n' +
' "ext1": "1",\n' +
' "zctGxmys": "1",\n' +
' "zctTp": "1",\n' +
' "zctDbd": "1",\n' +
' "saleOrderLine": "1",\n' +
' "zctHgz": "1",\n' +
' "zctZxsg": "1",\n' +
' "zctFktsl": "1",\n' +
' "zctPp": "1",\n' +
' "orderTypeDesc": "1",\n' +
' "specialRemark": "1",\n' +
' "zctWxys": "1",\n' +
' "zctWbxh": "1",\n' +
' "zctKhxh": "1",\n' +
' "zctFx": "1",\n' +
' "zctFxjd": "1",\n' +
' "zctSf": "1",\n' +
' "zctFkt": "1",\n' +
' "zctDt": "1"\n' +
' },\n' +
' "workCenter": "WC-2031-001",\n' +
' "salesOrder": "0010000352",\n' +
' "lotBasisData": {\n' +
' "creator": "snow",\n' +
' "dateCreate": "2024-11-13T14:52:24.482",\n' +
' "dateUpdate": "2024-11-13T16:43:28.172",\n' +
' "handle": "LotBasisBO:2031,20241109002",\n' +
' "hotLot": "N",\n' +
' "itemBo": "ItemBO:2031,ITEM01,A",\n' +
' "lotNo": "20241109002",\n' +
' "orgLotNo": "20241109002",\n' +
' "parentLotNo": "N/A",\n' +
' "priority": 999,\n' +
' "qty": 32.000000,\n' +
' "qtyDone": 0.000000,\n' +
' "qtyScrap": 0.000000,\n' +
' "shopOrderBo": "ShopOrderBO:2031,20241109002",\n' +
' "site": "2031",\n' +
' "status": "1",\n' +
' "updater": "syngna"\n' +
' },\n' +
' "site": "2031",\n' +
' "lotStateData": {\n' +
' "eventTime": "2024-11-13T16:43:30",\n' +
' "handle": "LotState:LotBasisBO:2031,20241109002",\n' +
' "lotBasisBo": "LotBasisBO:2031,20241109002",\n' +
' "lotNo": "20241109002",\n' +
' "lotSerial": "2024110900200001",\n' +
' "qty": 32.000000,\n' +
' "resourceBo": "ResourceBO:2031,FQ001",\n' +
' "routerStepBo": "RouterStepBO:RouterBO:2031,LHCCS01,0,A,10",\n' +
' "status": "R",\n' +
' "userNo": "syngna"\n' +
' },\n' +
' "lotNo": "20241109002",\n' +
' "user": "syngna",\n' +
' "operation": "FQ",\n' +
' "salesOrderLine": "20"\n' +
'}',
},
formLabelWidth: '120px'

View File

@ -145,7 +145,7 @@
<el-row :gutter="24">
<el-col :span="6">
<el-form-item label="班次" prop="userShift">
<el-select v-model="searchFormObj.userShift" style="width: 100%" clearable>
<el-select v-model="searchFormObj.userWorkShift" style="width: 100%" clearable>
<el-option v-for="item in userShiftList" :key="item.userWorkShift" :label="item.description"
:value="item.userWorkShift"></el-option>
</el-select>
@ -184,6 +184,7 @@
highlight-current-row
ref="mtrlConsMultipleTable"
@selection-change="mtrlConsSelectionChange"
:row-class-name="tableRowClassName"
:cell-style="{ 'text-align': 'center' }" tooltip-effect="dark" border style="width: 100%">
<el-table-column type="selection" width="50"></el-table-column>
<el-table-column type="index" width="60" fixed="left" label="序号"></el-table-column>
@ -200,8 +201,12 @@
<el-table-column prop="subUom" label="辅单位"></el-table-column>
<el-table-column prop="transactionType" label="事务类型"></el-table-column>
<el-table-column prop="transactionDate" label="事务日期" width="160"></el-table-column>
<el-table-column prop="" label="班次"></el-table-column>
<el-table-column prop="syncPostingDate" label="过账日期"></el-table-column>
<el-table-column prop="userWorkShift" label="班次">
<template slot-scope="scope">
{{ getValConvertShow(scope.row.userWorkShift, userShiftList) }}
</template>
</el-table-column>
<el-table-column prop="syncPostingDate" label="过账日期" width="110"></el-table-column>
<el-table-column prop="warehouseCode" label="仓库"></el-table-column>
<el-table-column prop="storageLocation" label="存储位置"></el-table-column>
<el-table-column prop="erpInventory" label="ERP仓库"></el-table-column>
@ -209,7 +214,7 @@
<el-table-column prop="reservedLine" label="预留行号"></el-table-column>
<el-table-column prop="syncStatus" label="SAP同步状态" width="110"></el-table-column>
<el-table-column prop="syncMsgText" label="SAP回复文本" width="160"></el-table-column>
<el-table-column prop="syncMsgNo" label="SAP消息编号" width="80"></el-table-column>
<el-table-column prop="syncMsgNo" label="SAP消息编号" width="120"></el-table-column>
<el-table-column prop="syncSubmitter" label="SAP提交用户" width="110"></el-table-column>
<el-table-column prop="syncPostingDate" label="SAP同步日期" width="110"></el-table-column>
<el-table-column prop="syncVoucherNo" label="SAP凭证编号" width="110"></el-table-column>
@ -247,6 +252,7 @@
<el-table :data="materialCompleteList" max-height="360" :header-cell-style="{ 'text-align': 'center' }"
highlight-current-row
ref="mtrlCompleteMultipleTable"
:row-class-name="tableRowClassName"
@selection-change="mtrlCompleteSelectionChange"
:cell-style="{ 'text-align': 'center' }" tooltip-effect="dark" border style="width: 100%">
<el-table-column type="selection" width="50"></el-table-column>
@ -257,7 +263,7 @@
<el-table-column prop="lotNo" label="LOT号" width="120"></el-table-column>
<el-table-column prop="item" label="产出物料"></el-table-column>
<el-table-column prop="item" label="物料描述"></el-table-column>
<el-table-column prop="sapBatchNo" label="SAP批次" width="150"></el-table-column>
<el-table-column prop="sapBatchNo" label="SAP批次" width="130"></el-table-column>
<el-table-column prop="externalLot" label="客户批号"></el-table-column>
<el-table-column prop="productType" label="入库类型"></el-table-column>
<el-table-column prop="mainQty" label="数量"></el-table-column>
@ -267,7 +273,11 @@
<el-table-column prop="qcGrade" label="判定等级"></el-table-column>
<el-table-column prop="transactionType" label="事务类型"></el-table-column>
<el-table-column prop="transactionDate" label="事务日期" width="160"></el-table-column>
<el-table-column prop="" label="班次"></el-table-column>
<el-table-column prop="userWorkShift" label="班次">
<template slot-scope="scope">
{{ getValConvertShow(scope.row.userWorkShift, userShiftList) }}
</template>
</el-table-column>
<el-table-column prop="syncPostingDate" label="过账日期" width="110"></el-table-column>
<el-table-column prop="warehouseCode" label="仓库"></el-table-column>
<el-table-column prop="storageLocation" label="存储位置"></el-table-column>
@ -420,7 +430,7 @@ export default {
statusList: [],
searchFormObj: {
site: getStore({name: 'tenantId'}),
userShift: '',
userWorkShift: '',
fabNo: '',
fabNoBo: '',
workCenter: '',
@ -747,8 +757,8 @@ export default {
// 字典状态值映射通用
getValConvertShow(srcVal, sourceList) {
let me = this;
let obj = sourceList.find(item => item.value === srcVal);
return obj != undefined ? obj.label : srcVal;
let obj = sourceList.find(item => item.userWorkShift === srcVal);
return obj != undefined ? obj.description : srcVal;
},
// 同步扣料数据报工数据
@ -864,6 +874,15 @@ export default {
mtrlCompleteSelectionChange(val){
this.mtrlCompleteSelection = val;
},
tableRowClassName({row, rowIndex}) {
if (row.syncStatus === 'E') {
return 'warning-row';
} else if (row.syncStatus === 'S') {
return 'success-row';
}
return '';
}
}
@ -871,5 +890,11 @@ export default {
</script>
<style lang="scss">
.el-table .warning-row {
background: oldlace;
}
.el-table .success-row {
background: #f0f9eb;
}
</style>

View File

@ -420,6 +420,7 @@ export default {
site: this.site,
operation: this.searchForm.operation,
resrce: this.searchForm.resrce,
userWorkShift: this.searchForm.userWorkShift,
operationList: this.operationList,
autoOperationList: this.autoOperationList,
autoResource: this.getResource,

View File

@ -499,6 +499,7 @@ export default {
operation: this.searchForm.operation,
resrce: this.searchForm.resrce,
rollType: this.searchForm.rollType,
userWorkShift: this.searchForm.userWorkShift,
operationList: this.operationList,
autoOperationList: this.autoOperationList,
autoResource: this.getResource,

View File

@ -577,6 +577,7 @@ export default {
operation: this.searchForm.operation,
resrce: this.searchForm.resrce,
rollType: this.searchForm.rollType,
userWorkShift: this.searchForm.userWorkShift,
operationList: this.operationList,
autoOperationList: this.autoOperationList,
autoResource: this.getResource,

View File

@ -47,14 +47,14 @@
<el-table-column prop="iqcResults" label="IQC状态"></el-table-column>
<el-table-column prop="item" label="物料"></el-table-column>
<el-table-column prop="itemDescription" label="物料名称"></el-table-column>
<el-table-column prop="vendorBatch" label="供应商批次"></el-table-column>
<el-table-column prop="productionDate" label="生产日期"></el-table-column>
<el-table-column prop="batch" label="到货批次"></el-table-column>
<el-table-column prop="unitOfMeasure" label="单位"></el-table-column>
<el-table-column prop="createUser" label="PR申请人"></el-table-column>
<el-table-column prop="state" label="行状态"></el-table-column>
<el-table-column prop="applicationsQuantity" label="申请数量"></el-table-column>
<el-table-column prop="actualQuantity" label="实际数量" ></el-table-column>
<el-table-column prop="salesBatch" label="出货批次"></el-table-column>
<el-table-column prop="registeredQty" label="已登记数量" width="110"></el-table-column>
<el-table-column prop="completedQty" label="已入库数量" width="110"></el-table-column>
<el-table-column prop="createDate" label="生产日期"></el-table-column>
<el-table-column prop="applicationsQuantity" label="到货数量"></el-table-column>
<el-table-column prop="completedQty" label="入库数量" width="110"></el-table-column>
</el-table>
</el-tab-pane>
</el-tabs>

View File

@ -70,7 +70,7 @@
<div style="margin-top: 10px;">
<el-button type="primary" @click="submit">提交</el-button>
<el-button type="primary" @click="oneClickExecute">一键入库</el-button>
<!-- <el-button type="primary" @click="oneClickExecute">一键入库</el-button>-->
<el-button type="warning" @click="doClear">清除</el-button>
</div>
@ -106,16 +106,17 @@
</el-input>
</el-descriptions-item>
</el-descriptions>
<div style="margin-top: 10px;" v-if="itemForm.itemType === 'ROH' || itemForm.itemType === 'VERP'">
<div style="margin-top: 10px;">
<el-row :gutter="10">
<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<el-form-item label="存储区域">
<el-input v-model="itemForm.storageLocation" :disabled="isUse">
<i slot="suffix" class="el-input__icon el-icon-search"
@click.stop="showStorageLocationDialog"></i>
</el-input>
</el-form-item>
</el-col>
<!-- 存储区域 注释掉-->
<!-- <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">-->
<!-- <el-form-item label="存储区域">-->
<!-- <el-input v-model="itemForm.storageLocation" :disabled="isUse">-->
<!-- <i slot="suffix" class="el-input__icon el-icon-search"-->
<!-- @click.stop="showStorageLocationDialog"></i>-->
<!-- </el-input>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<el-form-item label="最小包装数量">
<el-input type="number" v-model="itemForm.minNum" :disabled="isUse"
@ -164,14 +165,21 @@
<el-dialog :visible.sync="detailDialogVisible" center fullscreen>
<el-table :data="itemForm.inventoryList" border>
<el-table-column label="序号" prop="seq"></el-table-column>
<!-- <el-table-column label="序号" prop="seq"></el-table-column>-->
<el-table-column type="index" label="序号">
<template slot-scope="scope">
<div>
{{ scope.$index + 1 }}
</div>
</template>
</el-table-column>
<el-table-column label="数量" prop="inventoryQty">
<template slot-scope="scope">
<el-input v-model="scope.row.inventoryQty" type="number" @change="reSetRemainderNum($event,scope.row)"
:disabled="isUse"></el-input>
</template>
</el-table-column>
<el-table-column label="存储区域" prop="storageLocation"></el-table-column>
<!-- <el-table-column label="存储区域" prop="storageLocation"></el-table-column>-->
<el-table-column label="组" prop="group" v-if="itemForm.itemType === 'ROH'"></el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
@ -185,70 +193,71 @@
</div>
</el-dialog>
<el-dialog :visible.sync="dialogItemType1Form2Visible" center fullscreen @close="backUpCodeList">
<div style="margin-top: 10px;">
<el-form :model="itemForm" label-width="auto">
<el-descriptions :column="1" border :labelStyle="lableWidth">
<el-descriptions-item label="单据号">
{{ itemForm.documentNo }}
</el-descriptions-item>
<el-descriptions-item label="物料号">
{{ itemForm.item }}
</el-descriptions-item>
<el-descriptions-item label="物料描述">
{{ itemForm.itemDescription }}
</el-descriptions-item>
<el-descriptions-item label="客户编码">
{{ itemForm.customer }}
</el-descriptions-item>
<el-descriptions-item label="目标仓">
{{ itemForm.targetWarehouse }}
</el-descriptions-item>
<el-descriptions-item label="需求数量">
{{ itemForm.applicationsQuantity }}
</el-descriptions-item>
<el-descriptions-item label="汇总数量">
{{ itemForm.sumQuantity }}
</el-descriptions-item>
<el-descriptions-item label="单位">
{{ itemForm.unitOfMeasure }}
</el-descriptions-item>
<el-descriptions-item label="批次">
{{ itemForm.batch }}
</el-descriptions-item>
<!--<el-descriptions-item label="存储区域">
<el-input v-model="itemForm.storageLocation" :disabled="isUse">
<i slot="suffix" class="el-input__icon el-icon-search"
@click.stop="showStorageLocationDialog"></i>
</el-input>
</el-descriptions-item>-->
</el-descriptions>
<div style="margin-top: 10px;">
<el-form-item prop="code">
<el-input v-model="itemForm.code" placeholder="扫描条码" autofocus
@keyup.enter.native="scanCode" :disabled="isUse">
<i slot="suffix" class="el-input__icon el-icon-full-screen"></i>
</el-input>
</el-form-item>
<el-table :data="itemForm.inventoryList" border>
<el-table-column label="条码" prop="inventoryIdOrCarrier"></el-table-column>
<el-table-column label="数量" prop="inventoryQty"></el-table-column>
<el-table-column label="载具类型" prop="type"></el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button size="mini" type="primary" @click="delRow2(scope.$index, scope.row)"
:disabled="scope.row.isScan === 'N'">删除
</el-button>
</template>
</el-table-column>
</el-table>
</div>
</el-form>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="saveItemType1" :disabled="isUse">保存</el-button>
</div>
</el-dialog>
<!-- <el-dialog :visible.sync="dialogItemType1Form2Visible" center fullscreen @close="backUpCodeList">-->
<!-- <div style="margin-top: 10px;">-->
<!-- <el-form :model="itemForm" label-width="auto">-->
<!-- <el-descriptions :column="1" border :labelStyle="lableWidth">-->
<!-- <el-descriptions-item label="单据号">-->
<!-- {{ itemForm.documentNo }}-->
<!-- </el-descriptions-item>-->
<!-- <el-descriptions-item label="物料号">-->
<!-- {{ itemForm.item }}-->
<!-- </el-descriptions-item>-->
<!-- <el-descriptions-item label="物料描述">-->
<!-- {{ itemForm.itemDescription }}-->
<!-- </el-descriptions-item>-->
<!-- <el-descriptions-item label="客户编码">-->
<!-- {{ itemForm.customer }}-->
<!-- </el-descriptions-item>-->
<!-- <el-descriptions-item label="目标仓">-->
<!-- {{ itemForm.targetWarehouse }}-->
<!-- </el-descriptions-item>-->
<!-- <el-descriptions-item label="需求数量">-->
<!-- {{ itemForm.applicationsQuantity }}-->
<!-- </el-descriptions-item>-->
<!-- <el-descriptions-item label="汇总数量">-->
<!-- {{ itemForm.sumQuantity }}-->
<!-- </el-descriptions-item>-->
<!-- <el-descriptions-item label="单位">-->
<!-- {{ itemForm.unitOfMeasure }}-->
<!-- </el-descriptions-item>-->
<!-- <el-descriptions-item label="批次">-->
<!-- {{ itemForm.batch }}-->
<!-- </el-descriptions-item>-->
<!-- &lt;!&ndash;<el-descriptions-item label="存储区域">-->
<!-- <el-input v-model="itemForm.storageLocation" :disabled="isUse">-->
<!-- <i slot="suffix" class="el-input__icon el-icon-search"-->
<!-- @click.stop="showStorageLocationDialog"></i>-->
<!-- </el-input>-->
<!-- </el-descriptions-item>&ndash;&gt;-->
<!-- </el-descriptions>-->
<!-- <div style="margin-top: 10px;">-->
<!-- <el-form-item prop="code">-->
<!-- <el-input v-model="itemForm.code" placeholder="扫描条码" autofocus-->
<!-- @keyup.enter.native="scanCode" :disabled="isUse">-->
<!-- <i slot="suffix" class="el-input__icon el-icon-full-screen"></i>-->
<!-- </el-input>-->
<!-- </el-form-item>-->
<!-- <el-table :data="itemForm.inventoryList" border>-->
<!-- <el-table-column label="条码" prop="inventoryIdOrCarrier"></el-table-column>-->
<!-- <el-table-column label="数量" prop="inventoryQty"></el-table-column>-->
<!-- <el-table-column label="载具类型" prop="type"></el-table-column>-->
<!-- <el-table-column label="操作">-->
<!-- <template slot-scope="scope">-->
<!-- <el-button size="mini" type="primary" @click="delRow2(scope.$index, scope.row)"-->
<!-- :disabled="scope.row.isScan === 'N'">删除-->
<!-- </el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- </el-table>-->
<!-- </div>-->
<!-- </el-form>-->
<!-- </div>-->
<!-- <div slot="footer" class="dialog-footer">-->
<!-- <el-button type="primary" @click="saveItemType1" :disabled="isUse">保存</el-button>-->
<!-- </div>-->
<!-- </el-dialog>-->
<!-- -->
</basic-container>
</div>
</template>
@ -431,7 +440,7 @@
showProductionRequisitionDialog() {
let me = this;
me.productionRequisitionDialogVisible = true;
me.$refs.documentDialog.clear();
// me.$refs.documentDialog.clear();
me.productionRequisitionDialogObj.queryParam = {"documentType": me.documentType};
},
productionRequisitionSelect(row) {
@ -442,6 +451,8 @@
me.documentNo = me.formObj.documentNo;
getDocumentDetail(me.formObj.documentNo).then(res => {
if (res.data.code == 0) {
console.log(res.data.data)
debugger
for (let i = 0; i < res.data.data.length; i++) {
let obj = Object.assign({}, {
"item": res.data.data[i].item,
@ -483,6 +494,7 @@
me.formObj.itemList = [];
me.submitList = [];
getDocumentDetail(me.formObj.documentNo).then(res => {
debugger
if (res.data.code == 0) {
if (res.data.data[0].documentType !== me.documentType) {
if (me.documentType === 'PROCUREMENT_STORAGE') {
@ -523,6 +535,7 @@
showItemDialog(index, row) {
//判断是物料类型弹出不同的表单
let me = this;
debugger
//判断行项目是否已经关闭,关闭则不可扫描条码和保存
if (row.state === "CLOSE") {
this.isUse = true;
@ -538,40 +551,57 @@
obj.inventoryList = saveObj.inventoryList.slice();
}
}
if (row.itemType === 'ROH' || row.itemType === 'VERP') {
obj = obj == null ? Object.assign({
"inventoryList": [],
"code": "",
"storageLocation": "",
"minNum": 0,
"barCodeNum": 0,
"remainderNum": row.applicationsQuantity,
"sumRemainderNum": 0,
"minGroupNum": 0,
}, row) : obj;
me.itemForm = obj;
me.dialogItemType1FormVisible = true;
} else if (row.itemType === 'KMAT') {
obj = obj == null ? Object.assign({
"inventoryList": [{
inventoryQty: row.applicationsQuantity
}],
"code": "",
"storageLocation": "",
}, row) : obj;
me.itemForm = obj;
me.dialogItemType1FormVisible = true;
} else if (row.itemType === 'FERT') {
obj = obj == null ? Object.assign({
"inventoryList": [],
"code": "",
"sumQuantity": 0,
}, row) : obj;
me.itemForm = obj;
me.dialogItemType1Form2Visible = true;
} else {
me.$message.error("不支持的物料类型");
}
// 注释掉按物料类型进行显示入库执行的弹窗,改为只有包材这一种类型
// if (row.itemType === 'ROH' || row.itemType === 'VERP') {
// obj = obj == null ? Object.assign({
// "inventoryList": [],
// "code": "",
// "storageLocation": "",
// "minNum": 0,
// "barCodeNum": 0,
// "remainderNum": row.applicationsQuantity,
// "sumRemainderNum": 0,
// "minGroupNum": 0,
// }, row) : obj;
// me.itemForm = obj;
// me.dialogItemType1FormVisible = true;
// } else if (row.itemType === 'KMAT') {
// obj = obj == null ? Object.assign({
// "inventoryList": [{
// inventoryQty: row.applicationsQuantity
// }],
// "code": "",
// "storageLocation": "",
// }, row) : obj;
// me.itemForm = obj;
// me.dialogItemType1FormVisible = true;
// } else if (row.itemType === 'FERT') {
// obj = obj == null ? Object.assign({
// "inventoryList": [],
// "code": "",
// "sumQuantity": 0,
// }, row) : obj;
// me.itemForm = obj;
// me.dialogItemType1Form2Visible = true;
// } else {
// me.$message.error("不支持的物料类型");
// }
// VERP包材 现在只有包材概念,其他几种都不要了
obj = obj == null ? Object.assign({
"inventoryList": [],
"code": "",
"storageLocation": "",
"minNum": 0,
"barCodeNum": 0,
"remainderNum": row.applicationsQuantity,
"sumRemainderNum": 0,
"minGroupNum": 0,
}, row) : obj;
me.itemForm = obj;
me.dialogItemType1FormVisible = true;
},
submit() {
@ -621,7 +651,9 @@
} else if (me.itemForm.inventoryList.length === 0) {
me.$message.error("无信息可以保存,请点击返回按钮");
} else {
if (((me.itemForm.itemType === 'ROH' || me.itemForm.itemType === 'VERP') && me.itemForm.remainderNum !== 0) || (me.itemForm.itemType === 'FERT' && me.itemForm.sumQuantity !== me.itemForm.applicationsQuantity && isBlank(me.finishQtyControl))) {
// if (((me.itemForm.itemType === 'ROH' || me.itemForm.itemType === 'VERP') && me.itemForm.remainderNum !== 0) || (me.itemForm.itemType === 'FERT' && me.itemForm.sumQuantity !== me.itemForm.applicationsQuantity && isBlank(me.finishQtyControl))) {
if (me.itemForm.remainderNum !== 0) {
me.$message.error("剩余数量不为0,请继续输入");
} else {
me.backUpList = [];
@ -647,29 +679,50 @@
//最小包装数量改变事件
minNumChange() {
let me = this;
if (isBlank(me.itemForm.storageLocation)) {
// 改为不校验存储位置
if (!me.itemForm.minNum) {
me.itemForm.minNum = 0;
me.$message.error("存储位置为空");
me.$message.error("最小包装数量必须大于0");
} else {
if (!me.itemForm.minNum) {
me.itemForm.minNum = 0;
me.$message.error("最小包装数量必须大于0");
//最小数量
let minNum = me.itemForm.minNum;
//剩余数量
let remainderNum = me.itemForm.remainderNum;
let num = 0;
num = remainderNum % minNum;
if (num == 0) {
me.itemForm.barCodeNum = remainderNum / minNum;
} else {
//最小数量
let minNum = me.itemForm.minNum;
//剩余数量
let remainderNum = me.itemForm.remainderNum;
let num = 0;
num = remainderNum % minNum;
if (num == 0) {
me.itemForm.barCodeNum = remainderNum / minNum;
} else {
let barCodeNum = Math.floor(remainderNum / minNum);
me.itemForm.barCodeNum = barCodeNum;
}
me.inputFocus("barCodeNum");
let barCodeNum = Math.floor(remainderNum / minNum);
me.itemForm.barCodeNum = barCodeNum;
}
me.inputFocus("barCodeNum");
}
// if (isBlank(me.itemForm.storageLocation)) {
// me.itemForm.minNum = 0;
// me.$message.error("存储位置为空");
// } else {
// if (!me.itemForm.minNum) {
// me.itemForm.minNum = 0;
// me.$message.error("最小包装数量必须大于0");
// } else {
// //最小数量
// let minNum = me.itemForm.minNum;
// //剩余数量
// let remainderNum = me.itemForm.remainderNum;
// let num = 0;
// num = remainderNum % minNum;
// if (num == 0) {
// me.itemForm.barCodeNum = remainderNum / minNum;
// } else {
// let barCodeNum = Math.floor(remainderNum / minNum);
// me.itemForm.barCodeNum = barCodeNum;
// }
// me.inputFocus("barCodeNum");
// }
// }
},
//条码数量改变事件
barCodeNumChange() {

View File

@ -50,7 +50,7 @@
<el-table-column label="出货数量" prop="applicationsQuantity" align="center"></el-table-column>
<el-table-column label="单位" prop="unitOfMeasure" align="center"></el-table-column>
<el-table-column label="拣货数量" prop="pickQty" align="center"></el-table-column>
<el-table-column label="出货批次" prop="salesBatch" align="center"></el-table-column>
<el-table-column label="涂布批次" prop="salesBatch" align="center"></el-table-column>
<el-table-column label="拣货状态" prop="pickStatus" align="center">
<template slot-scope="scope">
{{formatterConst[scope.column.property][scope.row[scope.column.property]]}}
@ -171,14 +171,17 @@
import {
pickingPost,
pickingPrint,
saleOutPost,
selectPickingSuggest,
selectSaleOutDetail,
saleOutPostCancel,
pickingPostCancel,
pickingPrintA4
} from '@/api/wms/sale-out-platform';
import {fetchList as fetchProductionRequisitionList, pickingRemove} from "@/api/wms/picking";
import {fetchList as fetchProductionRequisitionList} from "@/api/wms/picking";
import {
pickingClean,
postOut
} from "@/api/wms/documentCommon";
import {getByCode} from '@/api/mes/sys/fast-code';
import {inputShowDialog, inputCallBack} from '@/util/inputSelectDialogUtil';
import {isBlank} from "@/util/string";
@ -399,13 +402,16 @@
return me.$message.error("第" + (i + 1) + "行拣货状态不允许清除");
}
}
let param = {
let param = /*{
activityId: me.$route.query.ACTIVITY_ID,
documentNo: me.saleOutListSelection[0].documentNo,
seqList: me.saleOutListSelection.map(o => o.seq),
};*/{
str: me.saleOutListSelection[0].documentNo,
list: me.saleOutListSelection.map(o => o.seq),
};
showLoading();
pickingRemove(param).then(res => {
pickingClean(param).then(res => {
hideLoading();
if (!res.data.data) {
return me.$message.error("该单据无拣货记录");
@ -489,8 +495,8 @@
saleOutPost() {
let me = this;
showLoading();
saleOutPost({
documentNo: me.formObj.documentNo,
postOut({
str: me.formObj.documentNo,
dateTime: dateFormat(me.formObj.dateTime)
}).then(res => {
hideLoading();