Files
scrq-hd/.svn/pristine/82/827f47baee31c6f098f9149a0d420f080c30648c.svn-base
2025-07-03 10:34:04 +08:00

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>