|
|
@ -1,20 +1,40 @@ |
|
|
|
<template> |
|
|
|
<div class="InventoryBookDetail_innerPage" v-loading="loading"> |
|
|
|
<!-- 搜索 --> |
|
|
|
<el-form :inline="true" :model="searchForm" size="small" class="searchHeader"> |
|
|
|
<el-form-item label="零件"> |
|
|
|
<el-form ref="searchForm" :inline="true" :rules="formRule" :model="searchForm" size="small" class="searchHeader"> |
|
|
|
<el-form-item label="ERP储位" prop="erpLocatioCode"> |
|
|
|
<el-input v-model="searchForm.erpLocatioCode" placeholder="请输入ERP储位"></el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="零件" prop="itemCode"> |
|
|
|
<el-input v-model="searchForm.itemCode" placeholder="请输入零件"></el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="开始时间"> |
|
|
|
<el-form-item label="账期" prop="interfaceCalendar"> |
|
|
|
<el-select |
|
|
|
:loading="calendarLoading" |
|
|
|
@change="calendarChange" |
|
|
|
v-model="searchForm.interfaceCalendar" |
|
|
|
placeholder="请选择账期" |
|
|
|
> |
|
|
|
<el-option |
|
|
|
v-for="item in calendarList" |
|
|
|
:key="item.id" |
|
|
|
:label="item.name" |
|
|
|
:value="item.id" |
|
|
|
></el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="开始时间" prop="beginDate"> |
|
|
|
<el-date-picker |
|
|
|
@change="timeChange" |
|
|
|
value-format="yyyy-MM-dd" |
|
|
|
v-model="searchForm.beginDate" |
|
|
|
type="date" |
|
|
|
placeholder="选择日期"> |
|
|
|
</el-date-picker> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="结束时间"> |
|
|
|
<el-form-item label="结束时间" prop="endDate"> |
|
|
|
<el-date-picker |
|
|
|
@change="timeChange" |
|
|
|
value-format="yyyy-MM-dd" |
|
|
|
v-model="searchForm.endDate" |
|
|
|
type="date" |
|
|
@ -51,11 +71,29 @@ |
|
|
|
:width="item.width" |
|
|
|
> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<div v-if="!scope.row.total"> |
|
|
|
<div v-if="scope.row.total_erp || scope.row.total_erp2 || scope.row.total_item"> |
|
|
|
<div v-if="scope.row.total_erp2"> |
|
|
|
<span v-if="totalProps[0] == item.prop" style="color: blue;font-weight:bold">库位小计:</span> |
|
|
|
<span v-if="totalProps.indexOf(item.prop) >= 0">{{scope.row.total_erp2[item.prop]}}</span> |
|
|
|
</div> |
|
|
|
<div v-if="scope.row.total_erp"> |
|
|
|
<span v-if="totalProps[0] == item.prop" style="color: #ff6000;font-weight:bold">储位小计:</span> |
|
|
|
<span v-if="totalProps.indexOf(item.prop) >= 0">{{scope.row.total_erp[item.prop]}}</span> |
|
|
|
</div> |
|
|
|
<div v-if="scope.row.total_item"> |
|
|
|
<span v-if="totalProps[0] == item.prop" style="color: #24b924;font-weight:bold">物料小计:</span> |
|
|
|
<span v-if="totalProps.indexOf(item.prop) >= 0">{{scope.row.total_item[item.prop]}}</span> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div v-else> |
|
|
|
<div v-if="item.prop == 'itemCode'"> |
|
|
|
{{ scope.row.level1[item.prop] }} |
|
|
|
<div>物料代码:<br/>【{{ scope.row.level1[item.prop] }}】</div> |
|
|
|
<br/> |
|
|
|
<div>物料名称:<br/>【{{ scope.row.level1.itemName }}】</div> |
|
|
|
<br/> |
|
|
|
<div>配置码:{{ scope.row.level1.configuration }}</div> |
|
|
|
<div>物料描述1:<br/>【{{ scope.row.level1.itemDesc1 }}】</div> |
|
|
|
<br/> |
|
|
|
<div v-if="scope.row.level1.configuration">配置码:<br/>【{{ scope.row.level1.configuration }}】</div> |
|
|
|
</div> |
|
|
|
<div v-else-if="item.prop == 'erpLocatioCode'">{{ scope.row.level2[item.prop] }}</div> |
|
|
|
<div v-else> |
|
|
@ -64,15 +102,13 @@ |
|
|
|
<div v-else-if="item.prop == 'sumOutQty'">{{ scope.row.level4.outQty }}</div> |
|
|
|
<div v-else-if="item.prop == 'createDateTime'">{{ scope.row.level4.createDateTime.slice(0,scope.row.level4.createDateTime.indexOf('T')) }}</div> |
|
|
|
<div v-else-if="item.prop == 'locationCode'">{{ scope.row.level4.locatioCode }}</div> |
|
|
|
<div v-else-if="item.prop == 'interFaceName'">{{getInterFaceName(scope.row.level4)}}</div> |
|
|
|
<div v-else-if="item.prop == 'enumTransType' || item.prop == 'enumTransSubType'">{{ scope.row.level4[item.prop] | trigger(item.option, "label") }}</div> |
|
|
|
<div v-else>{{ scope.row.level4[item.prop] }}</div> |
|
|
|
</div> |
|
|
|
<div v-else>{{ scope.row.level3[item.prop] }}</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div v-else> |
|
|
|
<span v-if="totalProps[0] == item.prop">储位小计:</span> |
|
|
|
<span v-if="totalProps.indexOf(item.prop) >= 0">{{scope.row.total[item.prop]}}</span> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
@ -80,39 +116,48 @@ |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
<script> |
|
|
|
import { getInventoryTransactionSerials } from '@/api/wms-api' |
|
|
|
import { getInventoryTransactionSerials,getInterfaceCalendar } from '@/api/wms-api' |
|
|
|
import { formatTimeStampToNorm } from '@/utils/formatTime' |
|
|
|
export default { |
|
|
|
name:"InventoryBookDetail_innerPage", |
|
|
|
data(){ |
|
|
|
return{ |
|
|
|
loading:false, |
|
|
|
calendarLoading:false, |
|
|
|
tableData:null, |
|
|
|
calendarList:[], |
|
|
|
searchForm:{ |
|
|
|
itemCode:'VW316C1A028A,VW316C1A131AG', |
|
|
|
beginDate: '2023-07-01', |
|
|
|
endDate: '2023-08-01', |
|
|
|
interfaceCalendar:null, |
|
|
|
erpLocatioCode:null, |
|
|
|
itemCode:null, |
|
|
|
beginDate: '', |
|
|
|
endDate: '', |
|
|
|
}, |
|
|
|
formRule: { |
|
|
|
beginDate: [{ required: true, trigger: "blur", message: "不可为空" }], |
|
|
|
endDate: [{ required: true, trigger: "blur", message: "不可为空" }], |
|
|
|
// itemCode: [{ required: true, trigger: "blur", message: "不可为空" }], |
|
|
|
}, |
|
|
|
tableHeader:{ |
|
|
|
companyName:localStorage.getItem('companyName') |
|
|
|
}, |
|
|
|
tableTh:[ |
|
|
|
{label:'物料代码',prop:'itemCode',width:180}, |
|
|
|
{label:'ERP储位',prop:'erpLocatioCode'}, |
|
|
|
{label:'库位代码',prop:'locationCode',width:180}, |
|
|
|
{label:'物料信息',prop:'itemCode',width:180}, |
|
|
|
{label:'ERP储位',prop:'erpLocatioCode',width:80}, |
|
|
|
{label:'库位代码',prop:'locationCode',width:80}, |
|
|
|
// {label:'inQty',prop:'inQty'}, |
|
|
|
// {label:'outQty',prop:'outQty'}, |
|
|
|
{label:'number',prop:'number'}, |
|
|
|
{label:'createDateTime',prop:'createDateTime'}, |
|
|
|
{label:'docNumber',prop:'docNumber'}, |
|
|
|
{label:'enumTransType',prop:'enumTransType'}, |
|
|
|
{label:'enumTransSubType',prop:'enumTransSubType'}, |
|
|
|
{label:'interFaceName',prop:'interFaceName'}, |
|
|
|
{label:'firstQty',prop:'firstQty'}, |
|
|
|
{label:'lastQty',prop:'lastQty'}, |
|
|
|
{label:'nowQty',prop:'nowQty'}, |
|
|
|
{label:'sumInQty/inQty',prop:'sumInQty'}, |
|
|
|
{label:'sumOutQty/outQty',prop:'sumOutQty'}, |
|
|
|
{label:'单号',prop:'number'}, |
|
|
|
{label:'创建时间',prop:'createDateTime'}, |
|
|
|
{label:'业务编号',prop:'docNumber'}, |
|
|
|
{label:'业务主类型',prop:'enumTransType',type:'filter',option:'TransTypeBase'}, |
|
|
|
{label:'业务子类型',prop:'enumTransSubType',type:'filter',option:'transSubType'}, |
|
|
|
{label:'对应接口',prop:'interFaceName',width:200}, |
|
|
|
{label:'期初库存',prop:'firstQty'}, |
|
|
|
{label:'期末库存',prop:'lastQty'}, |
|
|
|
{label:'结存',prop:'nowQty'}, |
|
|
|
{label:'入库',prop:'sumInQty'}, |
|
|
|
{label:'出库',prop:'sumOutQty'}, |
|
|
|
], |
|
|
|
totalProps:['firstQty','lastQty','nowQty','sumInQty','sumOutQty'], |
|
|
|
indexArray_item: [], //itemCode 存储所有合并的行号 |
|
|
@ -120,11 +165,51 @@ export default { |
|
|
|
indexArray_erp2: [], //locationCode 存储所有合并的行号 |
|
|
|
} |
|
|
|
}, |
|
|
|
mounted () {}, |
|
|
|
mounted () { |
|
|
|
this.getInterfaceCalendarList() |
|
|
|
}, |
|
|
|
methods:{ |
|
|
|
// 获取账期下拉 |
|
|
|
getInterfaceCalendarList(){ |
|
|
|
this.calendarLoading = true |
|
|
|
let _data = { |
|
|
|
condition: { |
|
|
|
filters: [] |
|
|
|
}, |
|
|
|
Sorting: "code DESC", |
|
|
|
SkipCount: 0, |
|
|
|
MaxResultCount: 1000 |
|
|
|
} |
|
|
|
getInterfaceCalendar(_data).then(res => { |
|
|
|
this.calendarList=res.items |
|
|
|
this.calendarLoading = false |
|
|
|
}).catch(err => { |
|
|
|
this.calendarLoading = false |
|
|
|
}) |
|
|
|
}, |
|
|
|
// 账期更改 |
|
|
|
calendarChange(id){ |
|
|
|
let _item = this.calendarList.filter(item=>{ |
|
|
|
return item.id == id |
|
|
|
})[0] |
|
|
|
this.searchForm.beginDate = _item.beginTime |
|
|
|
this.searchForm.endDate = _item.endTime |
|
|
|
}, |
|
|
|
// 时间更改 |
|
|
|
timeChange(data){ |
|
|
|
if(data){ |
|
|
|
this.searchForm.interfaceCalendar = "" |
|
|
|
} |
|
|
|
}, |
|
|
|
// 查询事件 |
|
|
|
searchHandle(){ |
|
|
|
this.getTableData() |
|
|
|
this.$refs.searchForm.validate((valid) => { |
|
|
|
if (valid) { |
|
|
|
this.getTableData() |
|
|
|
} else { |
|
|
|
return false; |
|
|
|
} |
|
|
|
}); |
|
|
|
}, |
|
|
|
// 年月转义 |
|
|
|
getYearMonth(date){ |
|
|
@ -134,10 +219,11 @@ export default { |
|
|
|
getNow(){ |
|
|
|
return formatTimeStampToNorm(new Date(),'date') |
|
|
|
}, |
|
|
|
// 表格数据转义 |
|
|
|
initTableData(res){ |
|
|
|
let _list = [] |
|
|
|
res.forEach(item1 => { |
|
|
|
item1.reportErpLocationSerialDtos.forEach(item2 => { |
|
|
|
item1.reportErpLocationSerialDtos.forEach((item2,index2) => { |
|
|
|
item2.reportLocationSerialDtos.forEach((item3,index3)=>{ |
|
|
|
// 如果有第四层 |
|
|
|
if(item3.reportTransactionSerialDtos && item3.reportTransactionSerialDtos.length > 0){ |
|
|
@ -149,13 +235,14 @@ export default { |
|
|
|
level4:item4, |
|
|
|
} |
|
|
|
_list.push(_item) |
|
|
|
// 如果有第四层添加库位小计 |
|
|
|
if(index4 == item3.reportTransactionSerialDtos.length - 1){ |
|
|
|
_list.push({ |
|
|
|
level1:item1, |
|
|
|
level2:item2, |
|
|
|
level3:item3, |
|
|
|
level4:item4, |
|
|
|
total:item3 |
|
|
|
total_erp2:item3 |
|
|
|
}) |
|
|
|
} |
|
|
|
}) |
|
|
@ -166,27 +253,58 @@ export default { |
|
|
|
level3:item3, |
|
|
|
} |
|
|
|
_list.push(_item) |
|
|
|
if(index3 == item2.reportLocationSerialDtos.length - 1){ |
|
|
|
// 如果没有第四层添加库位小计 |
|
|
|
// if(index3 == item2.reportLocationSerialDtos.length - 1){ |
|
|
|
_list.push({ |
|
|
|
level1:item1, |
|
|
|
level2:item2, |
|
|
|
level3:item3, |
|
|
|
total:item2 |
|
|
|
total_erp2:item3 |
|
|
|
}) |
|
|
|
} |
|
|
|
// } |
|
|
|
} |
|
|
|
// 添加储位小计 |
|
|
|
if(index3 == item2.reportLocationSerialDtos.length - 1){ |
|
|
|
_list.push({ |
|
|
|
level1:item1, |
|
|
|
level2:item2, |
|
|
|
level3:item3, |
|
|
|
total_erp:item2, |
|
|
|
}) |
|
|
|
} |
|
|
|
}) |
|
|
|
// 添加物料小计 |
|
|
|
if(index2 == item1.reportErpLocationSerialDtos.length - 1){ |
|
|
|
_list.push({ |
|
|
|
level1:item1, |
|
|
|
level2:item2, |
|
|
|
level3:{locationCode:null},//此处为了合并单元格做模拟locationCode处理 |
|
|
|
total_item:item1, |
|
|
|
}) |
|
|
|
} |
|
|
|
}) |
|
|
|
}); |
|
|
|
return _list |
|
|
|
}, |
|
|
|
// 格式化结束时间 |
|
|
|
initEndTime(data){ |
|
|
|
let _time = "" |
|
|
|
if(data.indexOf('T') >= 0){ |
|
|
|
_time = data.slice(0,data.indexOf('T')) + 'T23:59:59' |
|
|
|
}else{ |
|
|
|
_time = data + 'T23:59:59' |
|
|
|
} |
|
|
|
return _time |
|
|
|
}, |
|
|
|
// 获取表格数据 |
|
|
|
getTableData(){ |
|
|
|
this.loading = true |
|
|
|
let _itemCodes = this.searchForm.itemCode ? this.searchForm.itemCode.split(',') : [] |
|
|
|
getInventoryTransactionSerials( |
|
|
|
this.searchForm.itemCode.split(','),{ |
|
|
|
_itemCodes,{ |
|
|
|
startDateTime:this.searchForm.beginDate, |
|
|
|
endDateTime:this.searchForm.endDate, |
|
|
|
endDateTime:this.initEndTime(this.searchForm.endDate), |
|
|
|
erpLocatioCode:this.searchForm.erpLocatioCode, |
|
|
|
}).then(res => { |
|
|
|
this.tableData = this.initTableData(res) |
|
|
|
this.getIndexArr() |
|
|
@ -195,11 +313,19 @@ export default { |
|
|
|
this.loading = false |
|
|
|
}) |
|
|
|
}, |
|
|
|
// 样式class |
|
|
|
tableRowClass(data){ |
|
|
|
if(data.row.total){ |
|
|
|
if(data.row.total_erp2){ |
|
|
|
return "totalRow" |
|
|
|
} |
|
|
|
if(data.row.total_erp){ |
|
|
|
return "totalRow-red" |
|
|
|
} |
|
|
|
if(data.row.total_item){ |
|
|
|
return "totalRow-green" |
|
|
|
} |
|
|
|
}, |
|
|
|
// 获取合并单元格行 |
|
|
|
getIndexArr(){ |
|
|
|
// 合并 itemCode |
|
|
|
let count_item = 0 |
|
|
@ -225,6 +351,7 @@ export default { |
|
|
|
rowIndex += count_erp2 |
|
|
|
} |
|
|
|
}, |
|
|
|
// 获取合并单元格行数 |
|
|
|
getRows(rowIndex, name,prop,level) { |
|
|
|
let count = 0 |
|
|
|
for (let i = rowIndex; i < this.tableData.length; i++) { |
|
|
@ -286,7 +413,57 @@ export default { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
// 转义对应接口 |
|
|
|
getInterFaceName(item){ |
|
|
|
let _str = "" |
|
|
|
if (item.enumTransType == 11) { |
|
|
|
_str = '【TYRP】-【采购单】' |
|
|
|
} else if (item.enumTransType == 12) { |
|
|
|
_str = '【TYRP】-【采购退货单】*【EOS】-【退货单】' |
|
|
|
} else if (item.enumTransType == 14 && item.enumTransSubType == 4401) { |
|
|
|
_str = '【TYRP】-【验收单】*【EOS】-【验收单】' |
|
|
|
} else if (item.enumTransType == 14 && item.enumTransSubType == 4401) { |
|
|
|
_str = '【TYRP】-【储位、线边仓调拨单 和 客户储位调拨单】' |
|
|
|
} else if (item.enumTransType == 15 && item.enumTransSubType == 1505) { |
|
|
|
_str = '【TYRP】-【线边仓领料单】*【MES】-【发料单】' |
|
|
|
} else if (item.enumTransType == 15 && item.enumTransSubType == 1501) { |
|
|
|
_str = '【TYRP】-【线边仓领料单】*【MES】-【发料单】' |
|
|
|
} else if (item.enumTransType == 16) { |
|
|
|
_str = '【TYRP】-【线边仓退料单】' |
|
|
|
} else if (item.enumTransType == 31 && item.enumTransSubType == 3102) { |
|
|
|
_str = '【TYRP】-【储位、线边仓调拨单 和 客户储位调拨单】' |
|
|
|
} else if (item.enumTransType == 31 && item.enumTransSubType == 3104) { |
|
|
|
_str = '【TYRP】-【储位、线边仓调拨单 和 客户储位调拨单】' |
|
|
|
} else if (item.enumTransType == 31 && item.enumTransSubType == 3105) { |
|
|
|
_str = '【TYRP】-【储位、线边仓调拨单 和 客户储位调拨单】' |
|
|
|
} else if (item.enumTransType == 21) { |
|
|
|
_str = '【TYRP】-【缴库单】' |
|
|
|
} else if (item.enumTransType == 23 && item.enumTransSubType == 2302) { |
|
|
|
_str = '【TYRP】-【出货单】' |
|
|
|
} else if (item.enumTransType == 23 && item.enumTransSubType == 2303) { |
|
|
|
_str = '【TYRP】-【出货单】' |
|
|
|
} else if (item.enumTransType == 23) { |
|
|
|
_str = '【TYRP】-【非生产领料单】' |
|
|
|
} else if (item.enumTransType == 33 && item.enumTransSubType == 0) { |
|
|
|
_str = '【TYRP】-【非生产退料】' |
|
|
|
} else if (item.enumTransType == 33 && item.enumTransSubType == 3301) { |
|
|
|
_str = '【TYRP】-【回收料入库单】' |
|
|
|
} else if (item.enumTransType == 22) { |
|
|
|
_str = '【TYRP】-【退拆单】' |
|
|
|
} else if (item.enumTransType == 37 && item.enumTransSubType == 0) { |
|
|
|
_str = '【TYRP】-【盘点调整单】' |
|
|
|
} else if (item.enumTransType == 37 && item.enumTransSubType == 3701) { |
|
|
|
_str = '【TYRP】-【线边仓调整单】' |
|
|
|
} else if (item.enumTransType == 38 && item.enumTransSubType == 3302) { |
|
|
|
_str = '【TYRP】-【回收料调整单】' |
|
|
|
} else if (item.enumTransType == 36) { |
|
|
|
_str = '【TYRP】-【报废单、线边仓报废单】' |
|
|
|
} else { |
|
|
|
_str = '' |
|
|
|
} |
|
|
|
return _str |
|
|
|
}, |
|
|
|
} |
|
|
|
} |
|
|
|
</script> |
|
|
@ -381,7 +558,18 @@ export default { |
|
|
|
|
|
|
|
.totalRow{ |
|
|
|
td{ |
|
|
|
border-top: #333 solid 1px !important; |
|
|
|
border-top: blue dashed 1px !important; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.totalRow-red{ |
|
|
|
td{ |
|
|
|
border-top: #ff6000 solid 1px !important; |
|
|
|
} |
|
|
|
} |
|
|
|
.totalRow-green{ |
|
|
|
td{ |
|
|
|
border-top: #24b924 solid 1px !important; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|