|
|
@ -0,0 +1,303 @@ |
|
|
|
<template> |
|
|
|
<div class="app-container"> |
|
|
|
<el-form ref="queryForm" :model="formData" :inline="true"> |
|
|
|
<el-form-item :label="getColumnName('OM_WorkOrder-WorkOrderId')"> |
|
|
|
<el-input |
|
|
|
v-model.trim="formData.WorkOrderId" |
|
|
|
placeholder="请输入查询内容" |
|
|
|
clearable |
|
|
|
size="small" |
|
|
|
style="width: 200px" |
|
|
|
/> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="项目"> |
|
|
|
<el-select |
|
|
|
v-model="formData.ProjectId" |
|
|
|
clearable |
|
|
|
filterable |
|
|
|
placeholder="请选择" |
|
|
|
style="width: 100%" |
|
|
|
> |
|
|
|
<el-option |
|
|
|
v-for="item in projectArray" |
|
|
|
:key="item['ME_Project-ProjectId']" |
|
|
|
:label="item['ME_Project-Descr']" |
|
|
|
:value="item['ME_Project-ProjectId']" |
|
|
|
/> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item :label="getColumnName('OM_WorkOrder-ArtId')"> |
|
|
|
<el-input |
|
|
|
v-model.trim="formData.ArtId" |
|
|
|
placeholder="请输入查询内容" |
|
|
|
clearable |
|
|
|
size="small" |
|
|
|
style="width: 200px" |
|
|
|
/> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item :label="getColumnName('OM_WorkOrderStatus-Status')"> |
|
|
|
<el-select |
|
|
|
v-model="formData.status" |
|
|
|
clearable |
|
|
|
style="width: 100%" |
|
|
|
filterable |
|
|
|
placeholder="请选择" |
|
|
|
> |
|
|
|
<el-option |
|
|
|
v-for="item in orderStatusArray" |
|
|
|
:key="item['stdeftab-stdeftyp']" |
|
|
|
:label="item['stdeftab-bez']" |
|
|
|
:value="item['stdeftab-stdeftyp']" |
|
|
|
/> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item> |
|
|
|
<el-button |
|
|
|
type="primary" |
|
|
|
icon="el-icon-search" |
|
|
|
size="mini" |
|
|
|
@click="handleQuery" |
|
|
|
>搜索</el-button |
|
|
|
> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
<el-table |
|
|
|
v-loading="loading" |
|
|
|
:data="tableData" |
|
|
|
@expand-change="loadOrderData" |
|
|
|
border |
|
|
|
> |
|
|
|
<el-table-column type="expand"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-table :data="scope.row.tableDetailsList" border @row-click="setItem"> |
|
|
|
<el-table-column |
|
|
|
v-for="(item, index) in detailsHeaders" |
|
|
|
:key="index" |
|
|
|
:label="getColumnName(item)" |
|
|
|
:show-overflow-tooltip="true" |
|
|
|
align="center" |
|
|
|
> |
|
|
|
<template slot-scope="props"> |
|
|
|
<div |
|
|
|
v-if="item === 'OM_SerialOrder-SerialOrderStatus'" |
|
|
|
:class="[ colorClass[scope.row[item]], 'bg-div']" |
|
|
|
> |
|
|
|
{{ |
|
|
|
fieldTrans(props.row[item]['OM_SerialOrderStatus-Status']) |
|
|
|
}} |
|
|
|
</div> |
|
|
|
<span v-else-if="props.row[item] === '19000101000000'" /> |
|
|
|
<span v-else-if="item == 'OM_SerialOrder-PlanStartTime'" >{{parseTime(props.row[item])}}</span> |
|
|
|
<span v-else-if="item == 'OM_SerialOrder-PlanEndTime'" >{{parseTime(props.row[item])}}</span> |
|
|
|
<span v-else-if="item == 'OM_SerialOrder-ActEndTime'" >{{parseTime(props.row[item])}}</span> |
|
|
|
<span v-else>{{ props.row[item] }}</span> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column |
|
|
|
v-for="item in headers" |
|
|
|
:key="item" |
|
|
|
:label="getColumnName(item)" |
|
|
|
:show-overflow-tooltip="true" |
|
|
|
align="center" |
|
|
|
width="156px" |
|
|
|
> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<span v-if="item === 'OM_WorkOrder-PlantNr'">{{ |
|
|
|
getValue(scope.row['OM_WorkOrder-PlantNr']) |
|
|
|
}}</span> |
|
|
|
<span v-else-if="scope.row[item] === '19000101000000'" /> |
|
|
|
<div v-else-if="item === 'OM_WorkOrder-LastModify'"> |
|
|
|
{{ parseTime(scope.row[item]) }} |
|
|
|
</div> |
|
|
|
<div v-else-if="item === 'OM_WorkOrder-CreateTime'"> |
|
|
|
{{ parseTime(scope.row[item]) }} |
|
|
|
</div> |
|
|
|
<div v-else-if="item === 'OM_WorkOrder-PlanStartTime'"> |
|
|
|
{{ parseTime(scope.row[item]) }} |
|
|
|
</div> |
|
|
|
<div v-else-if="item === 'OM_WorkOrder-PlanEndTime'"> |
|
|
|
{{ parseTime(scope.row[item]) }} |
|
|
|
</div> |
|
|
|
<div v-else-if="item === 'OM_WorkOrder-ActStartTime'"> |
|
|
|
{{ parseTime(scope.row[item]) }} |
|
|
|
</div> |
|
|
|
<div v-else-if="item === 'OM_WorkOrder-ActEndTime'"> |
|
|
|
{{ parseTime(scope.row[item]) }} |
|
|
|
</div> |
|
|
|
<div |
|
|
|
v-else-if="item === 'OM_WorkOrderStatus-Status'" |
|
|
|
:class="[colorClass[scope.row[item]], 'bg-div'] " |
|
|
|
> |
|
|
|
{{ fieldTrans(scope.row[item]) }} |
|
|
|
</div> |
|
|
|
<div v-else-if="item === 'OM_WorkOrder-OrderType'"> |
|
|
|
{{ orderTypeTrans(scope.row[item]) }} |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<span v-else>{{ scope.row[item] }}</span> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
|
<pagination |
|
|
|
v-show="pagination.total > 0" |
|
|
|
:total="pagination.total" |
|
|
|
:page.sync="pagination.pageNumber" |
|
|
|
:limit.sync="pagination.pageSize" |
|
|
|
@pagination="getTableData" |
|
|
|
/> |
|
|
|
<TraceabilityDetails v-if="item['OM_SerialOrder-WorkOrderId']" :item="item" @callback="setItem" /> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
<script> |
|
|
|
import TraceabilityDetails from './traceabilityDetails.vue'; |
|
|
|
import {getWorkorderList, getSerialOrder, getProjectList} from '@/api/retrospect/product' |
|
|
|
export default { |
|
|
|
components:{ |
|
|
|
TraceabilityDetails |
|
|
|
}, |
|
|
|
data(){ |
|
|
|
return{ |
|
|
|
loading:false, |
|
|
|
formData:{}, |
|
|
|
pagination:{ |
|
|
|
pageNumber: 1, |
|
|
|
pageSize: 10, |
|
|
|
total:0 |
|
|
|
}, |
|
|
|
colorClass:{ |
|
|
|
10:'not-plan-bg', |
|
|
|
20:'has-plan-bg', |
|
|
|
24:'has-lock-bg', |
|
|
|
26:'has-issued-bg', |
|
|
|
39:'interrupt-bg', |
|
|
|
40:'in-production-bg', |
|
|
|
80:'has-complete-bg', |
|
|
|
90:'has-shipment-bg', |
|
|
|
95:'freeze-bg', |
|
|
|
98:'has-cancel-bg', |
|
|
|
}, |
|
|
|
headers:[ |
|
|
|
'OM_WorkOrder-PlantNr', |
|
|
|
'OM_WorkOrder-WorkOrderId', |
|
|
|
'OM_WorkOrderStatus-Status', |
|
|
|
'OM_WorkOrder-ArtId', |
|
|
|
'OM_WorkOrder-CustArtId', |
|
|
|
'OM_WorkOrder-ProjectId', |
|
|
|
'OM_WorkOrder-OrderType', |
|
|
|
'OM_WorkOrder-ErpOrderId', |
|
|
|
'OM_WorkOrder-ParentOrderId', |
|
|
|
'OM_WorkOrder-UsedResourceId', |
|
|
|
'OM_WorkOrder-PlanQty', |
|
|
|
'OM_WorkOrder-PlanStartTime', |
|
|
|
'OM_WorkOrder-PlanEndTime', |
|
|
|
'OM_WorkOrder-ActStartTime', |
|
|
|
'OM_WorkOrder-ActEndTime' |
|
|
|
], // 外层表格表头 |
|
|
|
detailsHeaders:[ |
|
|
|
'OM_SerialOrder-WorkOrderId', |
|
|
|
'OM_SerialOrder-SerialOrderId', |
|
|
|
'OM_SerialOrder-PlanResourceId', |
|
|
|
'OM_SerialOrder-UsedResourceId', |
|
|
|
'OM_SerialOrder-PlanQty', |
|
|
|
'OM_SerialOrder-ProjectId', |
|
|
|
'OM_SerialOrder-SerialOrderStatus', |
|
|
|
'OM_SerialOrder-PlanStartTime', |
|
|
|
'OM_SerialOrder-PlanEndTime', |
|
|
|
'OM_SerialOrder-ActEndTime', |
|
|
|
], // 明细表头 |
|
|
|
tableData:[], // table数据 |
|
|
|
projectArray:[],// 项目定义数据 |
|
|
|
orderStatusArray:[], // 订单状态 |
|
|
|
orderTypeArray:[], // 订单类型 |
|
|
|
item:{}, // 当前要操作的对象 |
|
|
|
} |
|
|
|
}, |
|
|
|
methods:{ |
|
|
|
setItem(row){ |
|
|
|
this.item=row; |
|
|
|
}, |
|
|
|
// 获取明细 |
|
|
|
loadOrderData(row) { |
|
|
|
if(row.tableDetailsList.length>0){ |
|
|
|
return; |
|
|
|
} |
|
|
|
getSerialOrder({workOrderId: row['OM_WorkOrder-WorkOrderId']}).then(({code, data=[]})=>{ |
|
|
|
if(code==200 && data){ |
|
|
|
this.tableData.forEach(e=>{ |
|
|
|
if(e['OM_WorkOrder-WorkOrderId'] == row['OM_WorkOrder-WorkOrderId']){ |
|
|
|
e.tableDetailsList=data||[] |
|
|
|
} |
|
|
|
}) |
|
|
|
} |
|
|
|
}) |
|
|
|
}, |
|
|
|
// 搜索 |
|
|
|
handleQuery(){ |
|
|
|
this.pagination.pageNumber=1; |
|
|
|
this.getTableData(); |
|
|
|
}, |
|
|
|
// 获取列表数据 |
|
|
|
getTableData(){ |
|
|
|
this.loading=true; |
|
|
|
getWorkorderList({...this.formData, ...this.pagination}).then(({code, data:{records=[], count=0}})=>{ |
|
|
|
this.loading=false; |
|
|
|
if(code==200){ |
|
|
|
this.tableData=(records || []).map(e=>{ |
|
|
|
e.tableDetailsList=[]; |
|
|
|
return e; |
|
|
|
}); |
|
|
|
this.pagination.count=count; |
|
|
|
}else{ |
|
|
|
this.tableData=[]; |
|
|
|
this.pagination.count=0; |
|
|
|
} |
|
|
|
}).catch(()=>{ |
|
|
|
this.loading=false; |
|
|
|
}) |
|
|
|
}, |
|
|
|
// 获取项目定义数据 |
|
|
|
getProject(){ |
|
|
|
getProjectList().then(({data}) => { |
|
|
|
this.projectArray = data || [] |
|
|
|
}) |
|
|
|
}, |
|
|
|
// 订单生产状态 |
|
|
|
getWorkOrderStatus(){ |
|
|
|
this.getStanderOne({ statid: 'WorkOrderStatus' }).then(({data}) => { |
|
|
|
this.orderStatusArray = (data || []).map(e=>{ |
|
|
|
e['stdeftab-stdeftyp'] = parseInt(e['stdeftab-stdeftyp']); |
|
|
|
return e; |
|
|
|
}) |
|
|
|
}) |
|
|
|
}, |
|
|
|
// 订单状态字段转换 |
|
|
|
fieldTrans(value) { |
|
|
|
const item = this.orderStatusArray.find(e=>e['stdeftab-stdeftyp'] === value); |
|
|
|
return item&&item['stdeftab-bez'] || value; |
|
|
|
}, |
|
|
|
// 订单类型字段转换 |
|
|
|
orderTypeTrans(value) { |
|
|
|
const item = this.orderTypeArray.find(e=>e['stdeftab-stdeftyp'] === value); |
|
|
|
return item&&item['stdeftab-bez'] || value; |
|
|
|
}, |
|
|
|
// 订单类型 |
|
|
|
getOrderType(){ |
|
|
|
this.getStanderOne({ statid: 'OM_OrderType' }).then(res => { |
|
|
|
this.orderTypeArray = res.data |
|
|
|
}) |
|
|
|
}, |
|
|
|
}, |
|
|
|
created(){ |
|
|
|
this.getProject(); |
|
|
|
this.getOrderType(); |
|
|
|
this.getWorkOrderStatus(); |
|
|
|
}, |
|
|
|
mounted(){ |
|
|
|
this.getTableData(); |
|
|
|
} |
|
|
|
} |
|
|
|
</script> |