484 lines
16 KiB
Plaintext
484 lines
16 KiB
Plaintext
<template>
|
|
<!-- 工单-详情 (流转卡,序列号)-->
|
|
<div class="app-container">
|
|
|
|
<el-tabs v-model="activeName" type="border-card" @tab-click="handleClick">
|
|
|
|
<el-tab-pane label="流转卡" name="flow">
|
|
<el-row style="margin-bottom:10px;">
|
|
<span style="color: #1890ff;">点击下拉箭头可查询过站记录</span>
|
|
</el-row>
|
|
<el-table @expand-change="rowExpandFlow" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }" :expand-row-keys="expands"
|
|
:row-key="getRowKeys" v-loading="loading" :data="flowList" border stripe ref="list" height="400px">
|
|
|
|
<el-table-column type="expand">
|
|
<template slot-scope="scope">
|
|
|
|
<el-table
|
|
border
|
|
v-loading="subLoading"
|
|
:data="childrenList"
|
|
ref="singleTableSon"
|
|
style="width: 95%"
|
|
|
|
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
|
|
row-key="tempId"
|
|
>
|
|
<el-table-column
|
|
label="订单号"
|
|
prop="orderProdNumber"
|
|
:show-overflow-tooltip="true"
|
|
width="120"
|
|
/>
|
|
<el-table-column
|
|
label="工单号"
|
|
align="center"
|
|
prop="orderWorkNumber"
|
|
:show-overflow-tooltip="true"
|
|
width="120"
|
|
/>
|
|
<el-table-column
|
|
label="流转卡号"
|
|
align="center"
|
|
prop="orderFlowNumber"
|
|
:show-overflow-tooltip="true"
|
|
width="120"
|
|
/>
|
|
<el-table-column
|
|
label="产品编码"
|
|
align="center"
|
|
prop="materialCode"
|
|
:show-overflow-tooltip="true"
|
|
width="120"
|
|
/>
|
|
<el-table-column
|
|
label="操作人"
|
|
align="center"
|
|
prop="createdBy"
|
|
:show-overflow-tooltip="true"
|
|
width="80"
|
|
/>
|
|
<el-table-column
|
|
label="过站时间"
|
|
align="center"
|
|
prop="createdDt"
|
|
:show-overflow-tooltip="true"
|
|
width="140"
|
|
/>
|
|
<el-table-column
|
|
label="工作中心"
|
|
align="center"
|
|
prop="workCenterName"
|
|
:show-overflow-tooltip="true"
|
|
width="140"
|
|
/>
|
|
<!-- <el-table-column
|
|
label="工艺路线"
|
|
align="center"
|
|
prop="routeName"
|
|
:show-overflow-tooltip="true"
|
|
width="auto"
|
|
/>
|
|
<el-table-column
|
|
label="工序"
|
|
align="center"
|
|
prop="operationName"
|
|
:show-overflow-tooltip="true"
|
|
width="auto"
|
|
/> -->
|
|
<el-table-column
|
|
label="完工数量"
|
|
align="center"
|
|
prop="doneQty"
|
|
:show-overflow-tooltip="true"
|
|
width="auto"
|
|
/>
|
|
<!-- <el-table-column label="合格数量" align="center" prop="okQty" :show-overflow-tooltip="true"/>
|
|
<el-table-column label="不合格数量" width="150" align="center" prop="ngQty" :show-overflow-tooltip="true"/> -->
|
|
|
|
|
|
</el-table>
|
|
</template>
|
|
|
|
</el-table-column>
|
|
<el-table-column label="流转卡号" align="center" prop="number" width="200" :show-overflow-tooltip="true"/>
|
|
<el-table-column label="产品编码" align="center" prop="materialCode" width="200" :show-overflow-tooltip="true"/>
|
|
<el-table-column label="产品名称" align="center" prop="materialName" width="200" :show-overflow-tooltip="true"/>
|
|
<el-table-column label="批次" align="center" prop="batchNumber" :show-overflow-tooltip="true"/>
|
|
<el-table-column label="计划数量" align="center" prop="planQty" :show-overflow-tooltip="true"/>
|
|
<el-table-column label="完工数量" align="center" prop="doneQty" :show-overflow-tooltip="true"/>
|
|
<el-table-column label="合格数量" align="center" prop="okQty" :show-overflow-tooltip="true"/>
|
|
<el-table-column label="不合格数量" width="110" align="center" prop="ngQty" :show-overflow-tooltip="true"/>
|
|
<el-table-column label="入库数量" align="center" prop="inStockQty" :show-overflow-tooltip="true"/>
|
|
</el-table>
|
|
<el-pagination
|
|
@size-change="handleFlowSizeChange"
|
|
@current-change="handleFlowCurrentChange"
|
|
:current-page="flowPageNo"
|
|
:page-sizes="[10, 20, 50, 100, 200]"
|
|
:page-size="flowPageSize"
|
|
layout="total, sizes, prev, pager, next, jumper"
|
|
:total="flowTotal"
|
|
></el-pagination>
|
|
</el-tab-pane>
|
|
<el-tab-pane label="序列号" name="serialNumber">
|
|
<el-row style="margin-bottom:10px;">
|
|
<span style="color: #1890ff;">点击下拉箭头可查询过站记录</span>
|
|
</el-row>
|
|
<el-table @expand-change="rowExpandSerial" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }" :expand-row-keys="expands"
|
|
:row-key="getRowKeys"
|
|
v-loading="loading" :data="serialList" border stripe ref="list" height="400px" :cell-style="cellStyle">
|
|
<el-table-column type="expand">
|
|
<template slot-scope="scope">
|
|
|
|
<el-table
|
|
border
|
|
v-loading="subLoading"
|
|
:data="childrenList"
|
|
ref="singleTableSon"
|
|
highlight-current-row
|
|
style="width: 100%"
|
|
|
|
>
|
|
<el-table-column
|
|
label="订单号"
|
|
prop="orderProdNumber"
|
|
:show-overflow-tooltip="true"
|
|
width="120"
|
|
/>
|
|
<el-table-column
|
|
label="工单号"
|
|
align="center"
|
|
prop="orderWorkNumber"
|
|
:show-overflow-tooltip="true"
|
|
width="120"
|
|
/>
|
|
<el-table-column
|
|
label="序列号"
|
|
align="center"
|
|
prop="serialNumber"
|
|
:show-overflow-tooltip="true"
|
|
width="120"
|
|
/>
|
|
<el-table-column
|
|
label="产品编码"
|
|
align="center"
|
|
prop="materialCode"
|
|
:show-overflow-tooltip="true"
|
|
width="auto"
|
|
/>
|
|
<el-table-column
|
|
label="产品名称"
|
|
align="center"
|
|
prop="materialName"
|
|
:show-overflow-tooltip="true"
|
|
width="auto"
|
|
/>
|
|
|
|
<el-table-column
|
|
label="工作中心"
|
|
align="center"
|
|
prop="workCenterName"
|
|
:show-overflow-tooltip="true"
|
|
width="auto"
|
|
/>
|
|
<el-table-column
|
|
label="操作人"
|
|
align="center"
|
|
prop="createdBy"
|
|
:show-overflow-tooltip="true"
|
|
width="80"
|
|
/>
|
|
<el-table-column
|
|
label="过站时间"
|
|
align="center"
|
|
prop="createdDt"
|
|
:show-overflow-tooltip="true"
|
|
width="140"
|
|
/>
|
|
|
|
|
|
|
|
|
|
|
|
</el-table>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="序号" align="center" type="index" width="50" :show-overflow-tooltip="true"/>
|
|
<el-table-column label="序列号" align="center" prop="number" width="200" :show-overflow-tooltip="true"/>
|
|
<el-table-column label="质量状态" align="center" prop="dictQcstatusShow" :show-overflow-tooltip="true"/>
|
|
<el-table-column label="条码状态" align="center" prop="dictStatusShow" :show-overflow-tooltip="true"/>
|
|
<el-table-column label="打印次数" align="center" prop="printCount" :show-overflow-tooltip="true"/>
|
|
|
|
|
|
<el-table-column label="下发状态" align="center" prop="isDistributed" :show-overflow-tooltip="true"/>
|
|
<!-- <el-table-column label="是否喷码" align="center" prop="marked" :show-overflow-tooltip="true"/> -->
|
|
|
|
|
|
<el-table-column label="上线时间" align="center" prop="inPdlineDt" width="180" :show-overflow-tooltip="true"/>
|
|
<el-table-column label="下线时间" align="center" prop="outPdlineDt" width="180" :show-overflow-tooltip="true"/>
|
|
<el-table-column label="包装时间" align="center" prop="packingDt" width="180" :show-overflow-tooltip="true"/>
|
|
<el-table-column label="发运时间" align="center" prop="shippingDt" width="180" :show-overflow-tooltip="true"/>
|
|
</el-table>
|
|
<el-pagination
|
|
@size-change="handleSerialSizeChange"
|
|
@current-change="handleSerialCurrentChange"
|
|
:current-page="serialPageNo"
|
|
:page-sizes="[10, 20, 50, 100, 200]"
|
|
:page-size="serialPageSize"
|
|
layout="total, sizes, prev, pager, next, jumper"
|
|
:total="serialTotal"
|
|
></el-pagination>
|
|
</el-tab-pane>
|
|
|
|
</el-tabs>
|
|
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
|
|
export default {
|
|
name: 'orderProd',
|
|
props: {
|
|
layerid: {
|
|
type: String,
|
|
default: ""
|
|
},
|
|
rows: {
|
|
type: Array,
|
|
default: [],
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
dictQcstatusFormatter:function(row){
|
|
if(row.dictQcstatus=='1'){return '合格'}
|
|
else return '不合格'
|
|
},
|
|
currentRowSon: null,
|
|
expands: [],
|
|
subLoading: false,
|
|
|
|
childrenList: [],
|
|
getRowKeys: (row) => {
|
|
return row.number; //这里看这一行中需要根据哪个属性值是id
|
|
},
|
|
loading: false,
|
|
total: 0,
|
|
serialList: [],
|
|
flowList:[],
|
|
// 查询参数
|
|
queryParams: {
|
|
pageNo: 1,
|
|
pageSize: 50,
|
|
code: undefined,
|
|
name: undefined
|
|
},
|
|
flowPageNo: 1,
|
|
flowPageSize: 50,
|
|
flowTotal:0,
|
|
serialPageNo: 1,
|
|
serialPageSize: 50,
|
|
serialTotal:0,
|
|
activeName: 'flow'
|
|
}
|
|
},
|
|
watch: {},
|
|
mounted() {
|
|
this.initData()
|
|
},
|
|
methods: {
|
|
//初始化表格
|
|
async initData() {
|
|
let resp=await this.getFlowList()
|
|
console.log(resp,'1559',typeof(resp))
|
|
//如果流转卡有数据就显示流转卡的数据 如果没有数据就显示序列号的数据
|
|
if (resp!=undefined && resp!=null && resp.length==0){
|
|
this.activeName="serialNumber"
|
|
this.getSerialList();
|
|
}
|
|
|
|
},
|
|
handleClick(tab, event) {
|
|
|
|
if (tab.name == "serialNumber") {
|
|
this.getSerialList();
|
|
}else {
|
|
this.getFlowList();
|
|
}
|
|
},
|
|
handleDbClick(row, event, column) {
|
|
this.$parent.getSelectBom(row);
|
|
this.$layer.close(this.layerid);
|
|
},
|
|
/** 查询序列号列表 */
|
|
async getSerialList() {
|
|
this.loading = true;
|
|
let resp=await this.$plan.getWorkSerialNumber({ orderWorkId: this.rows[0].id,pageSize:this.serialPageSize,pageNo:this.serialPageNo })
|
|
this.loading = false;
|
|
this.serialList = resp.data.data.data;
|
|
this.serialTotal=resp.data.data.recordsTotal
|
|
this.serialList.forEach(value => {
|
|
value.dictQcstatusShow=this.$dictType.getSNQStatus(value.dictQcstatus);
|
|
value.dictStatusShow=this.$dictType.getSNStatus(value.dictStatus);
|
|
})
|
|
|
|
|
|
|
|
},
|
|
/** 查询流转卡列表 */
|
|
async getFlowList() {
|
|
this.loading = true;
|
|
let resp=await this.$plan.getProdFlowListByWorkId({ orderWorkId: this.rows[0].id,pageSize:this.flowPageSize,pageNo:this.flowPageNo })
|
|
this.loading = false;
|
|
let result=[]
|
|
this.flowList = resp.data.data.data;
|
|
this.flowTotal=resp.data.data.recordsTotal
|
|
console.log(this.flowTotal,'1149')
|
|
result=resp.data.data.data
|
|
return result
|
|
|
|
},
|
|
//扩展列 流转卡显示过站
|
|
rowExpandFlow(row, rowList) {
|
|
console.log(row,rowList,'202109140937')
|
|
this.subLoading = true;
|
|
this.childrenList = [];
|
|
let that = this;
|
|
if (rowList.length) {
|
|
that.expands = [];
|
|
if (row) {
|
|
that.expands.push(row.number);
|
|
}
|
|
this.getChildrenList(row.number,'flow');
|
|
} else {
|
|
that.expands = [];
|
|
}
|
|
},
|
|
//扩展列 序列号显示过站
|
|
rowExpandSerial(row, rowList) {
|
|
console.log(row,rowList,'202109140937')
|
|
this.subLoading = true;
|
|
this.childrenList = [];
|
|
let that = this;
|
|
if (rowList.length) {
|
|
that.expands = [];
|
|
if (row) {
|
|
that.expands.push(row.number,'flow');
|
|
}
|
|
this.getChildrenList(row.number,'serial');
|
|
} else {
|
|
that.expands = [];
|
|
}
|
|
},
|
|
//
|
|
async getChildrenList(number,type) {
|
|
let tempData=[]
|
|
let tempId=1 //临时ID 为了使row-keys不重复
|
|
if(type=='flow'){
|
|
let data=await this.$plan.orderFlowHistory({ orderFlowNumber: number,orders: "id asc",pageNo:1,pageSize:99999 })
|
|
console.log(data.data,'0942')
|
|
tempData = data.data.data.data;
|
|
//下面按工作中心汇总
|
|
this.childrenList=[]
|
|
console.log(tempData,'1110')
|
|
for(let i=0;i<tempData.length;i++)
|
|
{
|
|
//如果匹配到就累加 没匹配到就创建
|
|
let obj=this.childrenList.find(o=>{return o.workCenterId==tempData[i].workCenterId})
|
|
if(obj==undefined) //没匹配到
|
|
{
|
|
|
|
let tempObj=JSON.parse(JSON.stringify(tempData[i]))
|
|
tempObj.tempId=tempId++
|
|
tempObj.children=[]
|
|
tempObj.createdDt="" //处理过站时间( 如果有需要)
|
|
tempData[i].hasChildren=false
|
|
tempData[i].tempId=tempId++
|
|
tempObj.children.push(tempData[i])
|
|
this.childrenList.push(tempObj)
|
|
}
|
|
else//匹配到
|
|
{
|
|
this.childrenList.forEach(
|
|
o=>{
|
|
if(o.workCenterId==tempData[i].workCenterId)
|
|
{
|
|
tempData[i].tempId=tempId++
|
|
o.children.push(tempData[i])
|
|
o.doneQty+=tempData[i].doneQty
|
|
}
|
|
}
|
|
)
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
if(type=='serial'){
|
|
let data=await this.$plan.orderSerialHistory({ serialNumber: number,orders: "id asc",pageNo:1,pageSize:99999 })
|
|
console.log(data.data,'0942')
|
|
this.childrenList= data.data.data.data;
|
|
}
|
|
|
|
|
|
this.subLoading = false;
|
|
},
|
|
cellStyle ({ row, column, rowIndex, columnIndex }) {
|
|
if (row.dictQcstatus == 1 && column.property=='dictQcstatusShow') {
|
|
//合格
|
|
return 'color:green;font-weight:bold;'
|
|
}else
|
|
if (row.dictQcstatus != 1 && column.property=='dictQcstatusShow') {
|
|
//不合格
|
|
return 'color:red;font-weight:bold;'
|
|
}
|
|
if (row.dictStatus == 20 && column.property=='dictStatusShow') {
|
|
//生产中
|
|
return 'color:lightBlue;font-weight:bold;'
|
|
}else
|
|
if (row.dictStatus ==30 && column.property=='dictStatusShow') {
|
|
//已下线
|
|
return 'color:green;font-weight:bold;'
|
|
}
|
|
},
|
|
/** 搜索按钮操作 */
|
|
handleQuery() {
|
|
this.queryParams.pageNo = 1
|
|
this.getList()
|
|
},
|
|
/** 重置按钮操作 */
|
|
resetQuery() {
|
|
this.dateRange = []
|
|
this.resetForm('queryForm')
|
|
this.handleQuery()
|
|
},
|
|
handleFlowSizeChange(val) {
|
|
this.flowPageSize = val;
|
|
|
|
this.getFlowList();
|
|
},
|
|
handleFlowCurrentChange(val) {
|
|
this.flowPageNo = val;
|
|
this.getFlowList();
|
|
},
|
|
handleSerialSizeChange(val) {
|
|
this.serialPageSize = val;
|
|
|
|
this.getSerialList();
|
|
},
|
|
handleSerialCurrentChange(val) {
|
|
this.serialPageNo = val;
|
|
this.getSerialList();
|
|
},
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
>>>.el-table{
|
|
width: 1000px !important;
|
|
}
|
|
</style>
|