2 changed files with 589 additions and 0 deletions
@ -0,0 +1,586 @@ |
|||
<script> |
|||
import chooseList from '../common/Chooselist.vue' |
|||
import {selectRework,startRework,saveRework} from '../../../api/production/generateReport' |
|||
import dayjs from 'dayjs' |
|||
import decimal, {Decimal} from 'decimal.js' |
|||
export default { |
|||
components:{ |
|||
chooseList, |
|||
}, |
|||
data(){ |
|||
return{ |
|||
searchData:{ |
|||
site:undefined, |
|||
orderNo:undefined, |
|||
seqNo:undefined, |
|||
workCenterNo:undefined, |
|||
partNo:undefined, |
|||
partDesc:undefined, |
|||
reworkStartDate:undefined, |
|||
reworkEndDate:undefined, |
|||
operatorName:undefined, |
|||
resourceId:undefined, |
|||
shiftNo:"", |
|||
}, |
|||
tagNo:undefined, |
|||
type:undefined, |
|||
startReworkRecordDialog:false, |
|||
reworkList:[], |
|||
saveRework:{ |
|||
seqNo:undefined, |
|||
site:this.$store.state.user.site, |
|||
}, |
|||
reportWorkDialog:false, |
|||
saveType:undefined, |
|||
numberOrWeight:undefined,//0数量,1重量 |
|||
} |
|||
}, |
|||
methods:{ |
|||
getBaseData (val) { |
|||
if (this.tagNo === 24) { |
|||
this.searchData.workCenterNo = val.WorkCenterNo |
|||
} else if (this.tagNo === 5) { |
|||
this.searchData.partNo = val.PartNo |
|||
}else if (this.tagNo === 26) { |
|||
if (this.type === 1){ |
|||
this.saveRework.operatorId = val.OperatorID |
|||
this.saveRework.operatorName = val.OperatorName |
|||
}else { |
|||
this.searchData.operatorName = val.OperatorName |
|||
} |
|||
}else if (this.tagNo === 88) { |
|||
this.searchData.resourceId = val.ResourceID |
|||
} |
|||
}, |
|||
// 获取基础数据列表S |
|||
getBaseList (val, type) { |
|||
this.tagNo = val |
|||
this.type = type?type:null |
|||
this.$nextTick(() => { |
|||
let strVal = '' |
|||
if (val === 24) { |
|||
strVal = this.searchData.workCenterNo |
|||
}else if (val === 5) { |
|||
strVal = this.searchData.partNo |
|||
}else if (val === 26) { |
|||
if (type === 1){ |
|||
strVal = this.saveRework.operatorId |
|||
}else { |
|||
strVal = this.searchData.operatorName |
|||
} |
|||
}else if (val === 88) { |
|||
strVal = this.searchData.resourceId |
|||
} |
|||
this.$refs.baseList.init(val, strVal) |
|||
}) |
|||
}, |
|||
selectRework(){ |
|||
selectRework(this.searchData).then(({data})=>{ |
|||
if (data && data.code === 0){ |
|||
this.reworkList = data.rows |
|||
} |
|||
}).catch((error)=>{ |
|||
|
|||
}) |
|||
}, |
|||
closeStartReworkRecordDialog(){ |
|||
this.saveRework = { |
|||
seqNo: undefined, |
|||
site:this.$store.state.user.site, |
|||
} |
|||
this.saveType = undefined; |
|||
this.numberOrWeight = undefined; |
|||
}, |
|||
startRework(){ |
|||
this.saveRework.createTime = dayjs(new Date()).format("YYYY-MM-DD HH:mm:ss") |
|||
this.saveRework.createBy = this.$store.state.user.name |
|||
startRework(this.saveRework).then(({data})=>{ |
|||
if (data && data.code === 0){ |
|||
this.$message.success(data.msg) |
|||
this.startReworkRecordDialog = false; |
|||
this.selectRework(); |
|||
}else { |
|||
this.$alert(data.msg, '错误信息', { |
|||
confirmButtonText: '确定' |
|||
}) |
|||
} |
|||
}).catch((error)=>{ |
|||
this.$alert(error, '错误信息', { |
|||
confirmButtonText: '确定' |
|||
}) |
|||
}) |
|||
}, |
|||
clickReportWork(row,type){ |
|||
this.saveRework = {...row} |
|||
this.saveRework.reworkStartDate = new Date() |
|||
this.saveRework.reworkEndDate = new Date() |
|||
this.reportWorkDialog = true |
|||
this.saveType = type |
|||
this.saveRework.productionTime = new Decimal(dayjs(new Date()).diff(this.saveRework.createTime,'hour',true)).toFixed(2, Decimal.ROUND_HALF_UP) |
|||
this.saveRework.productionTime = new Decimal(this.saveRework.productionTime).toSignificantDigits() |
|||
}, |
|||
computedQualifiedQty(){ |
|||
if (this.saveRework.qualifiedQty && this.saveRework.qualifiedQty > 0){ |
|||
this.numberOrWeight = 1; |
|||
}else { |
|||
this.numberOrWeight = undefined; |
|||
this.saveRework.qualifiedQty = 0 |
|||
} |
|||
if (!this.saveRework.missingWeight || this.saveRework.missingWeight < 0){ |
|||
this.saveRework.missingWeight = 0; |
|||
} |
|||
this.saveRework.frameWeight = 0; |
|||
this.saveRework.qualifiedWeightFrame = new Decimal(this.saveRework.qualifiedQty).mul(new Decimal(this.saveRework.unitWeight)).toFixed(6, Decimal.ROUND_HALF_UP); |
|||
this.saveRework.qualifiedWeightFrame = new Decimal(this.saveRework.qualifiedWeightFrame).toSignificantDigits(); |
|||
}, |
|||
computedMissingQty(){ |
|||
if (!this.saveRework.missingQty || this.saveRework.missingQty < 0){ |
|||
this.saveRework.missingQty = 0 |
|||
} |
|||
this.saveRework.missingWeight = new Decimal(this.saveRework.missingQty).mul(new Decimal(this.saveRework.unitWeight)).toFixed(6, Decimal.ROUND_HALF_UP); |
|||
this.saveRework.missingWeight = new Decimal(this.saveRework.missingWeight).toSignificantDigits(); |
|||
}, |
|||
computedQualifiedWeightFrame(){ |
|||
if (this.saveRework.qualifiedWeightFrame && this.saveRework.qualifiedWeightFrame > 0){ |
|||
this.numberOrWeight = 0; |
|||
}else if (this.saveRework.qualifiedWeightFrame === 0){ |
|||
this.saveRework.qualifiedQty = 0; |
|||
}else { |
|||
this.numberOrWeight = undefined; |
|||
this.saveRework.qualifiedWeightFrame = 0 |
|||
} |
|||
// 不带框合格重量 |
|||
let value = new Decimal(this.saveRework.qualifiedWeightFrame).sub(new Decimal(this.saveRework.frameWeight)) |
|||
if (value.toNumber() < 0){ |
|||
this.saveRework.qualifiedQty = 0; |
|||
return |
|||
} |
|||
// 不带框合格数量 |
|||
this.saveRework.qualifiedQty = value.div(new Decimal(this.saveRework.unitWeight)).toNumber() |
|||
if (this.saveRework.qualifiedQty < 0){ |
|||
this.saveRework.qualifiedQty = 0; |
|||
}else if (this.saveRework.qualifiedQty < 1 && this.saveRework.qualifiedQty > 0){ |
|||
this.saveRework.qualifiedQty = 1; |
|||
} |
|||
}, |
|||
computedFrameWeight(){ |
|||
if (!this.saveRework.frameWeight || this.saveRework.frameWeight < 0){ |
|||
this.saveRework.frameWeight = 0 |
|||
} |
|||
this.computedQualifiedWeightFrame(); |
|||
this.numberOrWeight = undefined; |
|||
}, |
|||
computedMissingWeight(){ |
|||
if (!this.saveRework.missingWeight || this.saveRework.missingWeight < 0){ |
|||
this.saveRework.missingWeight = 0 |
|||
} |
|||
let value = new Decimal(this.saveRework.missingWeight).div(new Decimal(this.saveRework.unitWeight)).toNumber() |
|||
if (value < 0){ |
|||
this.saveRework.missingQty = 0 |
|||
}else if (value > 0 && value < 1){ |
|||
this.saveRework.missingQty = 1 |
|||
}else { |
|||
this.saveRework.missingQty = value |
|||
} |
|||
}, |
|||
saveOrUpdateRework(){ |
|||
saveRework(this.saveRework).then(({data})=>{ |
|||
if (data && data.code === 0){ |
|||
this.$message.success(data.msg) |
|||
this.reportWorkDialog = false; |
|||
this.selectRework(); |
|||
}else { |
|||
this.$alert(data.msg, '错误信息', { |
|||
confirmButtonText: '确定' |
|||
}) |
|||
} |
|||
}).error((error)=>{ |
|||
this.$alert(error, '错误信息', { |
|||
confirmButtonText: '确定' |
|||
}) |
|||
}) |
|||
} |
|||
}, |
|||
created () { |
|||
this.selectRework(); |
|||
}, |
|||
} |
|||
</script> |
|||
|
|||
<template> |
|||
<div> |
|||
<choose-list ref="baseList" @getBaseData="getBaseData"></choose-list> |
|||
<el-dialog title="开始返修" @close="closeStartReworkRecordDialog" :visible.sync="startReworkRecordDialog" :close-on-click-modal="false" width="10%"> |
|||
<el-form :model="saveRework" label-position="top"> |
|||
<el-form-item label="派工单号" prop="seqNo"> |
|||
<el-input type="number" v-model="saveRework.seqNo"></el-input> |
|||
</el-form-item> |
|||
</el-form> |
|||
<el-footer style="height:40px;margin-top: 20px;text-align:center"> |
|||
<el-button type="primary" @click="startRework">确定</el-button> |
|||
<el-button type="primary" @click="startReworkRecordDialog = false">取消</el-button> |
|||
</el-footer> |
|||
</el-dialog> |
|||
<el-dialog title="返工信息" @close="closeStartReworkRecordDialog" top="15vh" :close-on-click-modal="false" :visible.sync="reportWorkDialog" width="40%"> |
|||
<el-form :model="saveRework" style="padding: 5px" label-position="top"> |
|||
<el-row :gutter="20"> |
|||
<el-col :span="6"> |
|||
<el-form-item label="派工单号"> |
|||
<el-input disabled v-model="saveRework.seqNo"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="6"> |
|||
<el-form-item label="产品编码"> |
|||
<el-input disabled v-model="saveRework.partNo"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="12"> |
|||
<el-form-item label="产品名称/规格型号"> |
|||
<el-input disabled v-model="saveRework.partDesc"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="6"> |
|||
<el-form-item label="工序号"> |
|||
<el-input disabled v-model="saveRework.itemNo"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="6"> |
|||
<el-form-item label="工序名称"> |
|||
<el-input disabled v-model="saveRework.itemDesc"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="6"> |
|||
<el-form-item label="加工中心编码"> |
|||
<el-input disabled v-model="saveRework.workCenterNo"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="6"> |
|||
<el-form-item label="加工中心名称"> |
|||
<el-input disabled v-model="saveRework.workCenterDesc"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="6"> |
|||
<el-form-item label="操作员"> |
|||
<span slot="label" v-if="saveType !== 0" @click="getBaseList(26,1)"><a>操作员</a></span> |
|||
<el-input :disabled="saveType === 0" v-model="saveRework.operatorId"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="6"> |
|||
<el-form-item label="操作员姓名"> |
|||
<el-input disabled v-model="saveRework.operatorName"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="6"> |
|||
<el-form-item label="生产日期"> |
|||
<el-date-picker |
|||
:disabled="saveType === 0" |
|||
style="width: 100%" |
|||
v-model="saveRework.reworkStartDate" |
|||
type="date" |
|||
value-format="yyyy-MM-dd" |
|||
format = "yyyy-MM-dd" |
|||
placeholder="选择日期"> |
|||
</el-date-picker> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="6"> |
|||
<el-form-item label="报告日期"> |
|||
<el-date-picker |
|||
:disabled="saveType === 0" |
|||
style="width: 100%" |
|||
v-model="saveRework.reworkEndDate" |
|||
type="date" |
|||
value-format="yyyy-MM-dd" |
|||
format = "yyyy-MM-dd" |
|||
placeholder="选择日期"> |
|||
</el-date-picker> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="6"> |
|||
<el-form-item label="合格数量"> |
|||
<el-input type="number" :disabled="saveType === 0 || numberOrWeight === 0" @blur="computedQualifiedQty" v-model="saveRework.qualifiedQty"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="6"> |
|||
<el-form-item label="不合格/缺失数量" > |
|||
<el-input type="number" :disabled="saveType === 0" @blur="computedMissingQty" v-model="saveRework.missingQty"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="6"> |
|||
<el-form-item label="单位重量"> |
|||
<el-input disabled v-model="saveRework.unitWeight"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
<el-row :gutter="20"> |
|||
<el-col :span="6"> |
|||
<el-form-item label="带框合格重量(KG)"> |
|||
<el-input type="number" :disabled="saveType === 0 || numberOrWeight === 1" @blur="computedQualifiedWeightFrame" v-model="saveRework.qualifiedWeightFrame"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="6"> |
|||
<el-form-item label="不合格/缺失重量(KG)"> |
|||
<el-input type="number" :disabled="saveType === 0 || numberOrWeight === 1" @blur="computedMissingWeight" v-model="saveRework.missingWeight"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
<el-row :gutter="20"> |
|||
<el-col :span="6"> |
|||
<el-form-item label="框重(KG)"> |
|||
<el-input type="number" :disabled="saveType === 0 || numberOrWeight === 1" @blur="computedFrameWeight" v-model="saveRework.frameWeight"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="6"> |
|||
<el-form-item label="废边重量(G)"> |
|||
<el-input type="number" :disabled="saveType === 0" v-model="saveRework.wasteEdgeWeight"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
</el-form> |
|||
<fieldset class="customer-fieldset"> |
|||
<legend class="customer-legend">不良处理</legend> |
|||
<el-form :model="saveRework" label-position="top"> |
|||
<el-row :gutter="20"> |
|||
<el-col :span="6"> |
|||
<el-form-item label="报废数量"> |
|||
<el-input type="number" :disabled="saveType === 0" v-model="saveRework.scrapQuantity"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="18"> |
|||
<el-form-item label="报废原因"> |
|||
<el-input :disabled="saveType === 0" v-model="saveRework.scrapReason"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="6"> |
|||
<el-form-item label="接收数量"> |
|||
<el-input type="number" :disabled="saveType === 0" v-model="saveRework.acceptedQuantity"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="18"> |
|||
<el-form-item label="瑕疵原因"> |
|||
<el-input :disabled="saveType === 0" v-model="saveRework.causeDefect"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
</el-form> |
|||
</fieldset> |
|||
<el-form :model="saveRework" style="padding: 5px" label-position="top"> |
|||
<el-row :gutter="20"> |
|||
<el-col :span="6"> |
|||
<el-form-item label="准备时间"> |
|||
<el-input type="number" :disabled="saveType === 0" v-model="saveRework.readinessTime" ></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="6"> |
|||
<el-form-item label="制造时间"> |
|||
<el-input type="number" disabled v-model="saveRework.productionTime"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="24"> |
|||
<el-form-item label="备注"> |
|||
<el-input :disabled="saveType === 0" v-model="saveRework.remark"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
</el-form> |
|||
<span slot="footer" class="dialog-footer"> |
|||
<el-button @click="reportWorkDialog = false">取消</el-button> |
|||
<el-button type="primary" @click="saveOrUpdateRework">确定</el-button> |
|||
</span> |
|||
</el-dialog> |
|||
|
|||
<el-form v-model="searchData" label-position="top"> |
|||
<el-row :gutter="10"> |
|||
<el-col :span="2"> |
|||
<el-form-item label="工厂编码"> |
|||
<el-input v-model="searchData.site"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="2"> |
|||
<el-form-item label="生产订单号"> |
|||
<el-input v-model="searchData.orderNo"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="2"> |
|||
<el-form-item label="派工单号"> |
|||
<el-input v-model="searchData.seqNo" type="number"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="2"> |
|||
<el-form-item label="加工中心编码"> |
|||
<span slot="label" style="" @click="getBaseList(24)"><a>加工中心编码</a></span> |
|||
<el-input v-model="searchData.workCenterNo"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="2"> |
|||
<el-form-item label="产品编码"> |
|||
<span slot="label" style="" @click="getBaseList(5)"><a>产品编码</a></span> |
|||
<el-input v-model="searchData.partNo"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="2"> |
|||
<el-form-item label="规格型号"> |
|||
<el-input v-model="searchData.partDesc"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
<el-row :gutter="10"> |
|||
<el-col :span="2"> |
|||
<el-form-item label="返修日期:"> |
|||
<el-date-picker |
|||
style="width: 100%" |
|||
v-model="searchData.reworkStartDate" |
|||
value-format="yyyy-MM-dd" |
|||
placeholder="选择日期"> |
|||
</el-date-picker> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="2"> |
|||
<el-form-item label="至: "> |
|||
<el-date-picker |
|||
style="width: 100%" |
|||
v-model="searchData.reworkEndDate" |
|||
type="date" |
|||
value-format="yyyy-MM-dd" |
|||
placeholder="选择日期"> |
|||
</el-date-picker> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="2"> |
|||
<el-form-item label="操作员姓名"> |
|||
<span slot="label" style="" @click="getBaseList(26,3)"><a>操作员姓名</a></span> |
|||
<el-input v-model="searchData.operatorName"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="2" v-if="false"> |
|||
<el-form-item label="机台ID"> |
|||
<span slot="label" style="" @click="getBaseList(88)"><a>机台ID</a></span> |
|||
<el-input v-model="searchData.resourceId"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="2" v-if="false"> |
|||
<el-form-item label="班次"> |
|||
<el-select v-model="searchData.shiftNo"> |
|||
<el-option label="全部" value=""></el-option> |
|||
<el-option label="白班" value="白班"></el-option> |
|||
<el-option label="晚班" value="晚班"></el-option> |
|||
<el-option label="加班" value="加班"></el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="4"> |
|||
<el-form-item label=" "> |
|||
<el-button type="primary" @click="selectRework">查 询</el-button> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
</el-form> |
|||
<div style="margin: 8px 0"> |
|||
<el-button size="small" icon="el-icon-edit" type="primary" @click="startReworkRecordDialog = true"> 开 始 返 修</el-button> |
|||
</div> |
|||
<el-table |
|||
height="76vh" |
|||
:data="reworkList" |
|||
border |
|||
style="width: 100%"> |
|||
<el-table-column |
|||
header-align="center" |
|||
align="center" |
|||
width="80" |
|||
label="操作"> |
|||
<template slot-scope="scope" class="foo_container"> |
|||
<a style="cursor: pointer;" v-if="scope.row.reworkStatus === '返工中'" @click="clickReportWork(scope.row)">报工</a> |
|||
<a style="cursor: pointer;" @click="clickReportWork(scope.row,0)">详情</a> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column |
|||
header-align="center" |
|||
align="left" |
|||
min-width="100" |
|||
prop="site" |
|||
label="工厂编码"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
header-align="center" |
|||
align="left" |
|||
min-width="100" |
|||
prop="seqNo" |
|||
label="派工单号"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
header-align="center" |
|||
align="left" |
|||
min-width="100" |
|||
prop="orderNo" |
|||
label="生产订单"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
header-align="center" |
|||
align="left" |
|||
min-width="100" |
|||
prop="partNo" |
|||
label="产品编码"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
header-align="center" |
|||
align="left" |
|||
min-width="100" |
|||
prop="partDesc" |
|||
label="规格型号"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
header-align="center" |
|||
align="left" |
|||
min-width="100" |
|||
prop="workCenterNo" |
|||
label="加工编码"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
header-align="center" |
|||
align="left" |
|||
min-width="100" |
|||
prop="workCenterDesc" |
|||
label="加工中心"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
header-align="center" |
|||
align="left" |
|||
min-width="100" |
|||
prop="itemNo" |
|||
label="工序号"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
header-align="center" |
|||
align="left" |
|||
min-width="100" |
|||
prop="itemDesc" |
|||
label="工序名称"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
header-align="center" |
|||
align="center" |
|||
min-width="100" |
|||
prop="reworkStatus" |
|||
label="工序名称"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
header-align="center" |
|||
align="center" |
|||
min-width="100" |
|||
prop="createTime" |
|||
label="创建时间"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
header-align="center" |
|||
align="left" |
|||
min-width="100" |
|||
prop="createBy" |
|||
label="创建人"> |
|||
</el-table-column> |
|||
</el-table> |
|||
|
|||
</div> |
|||
</template> |
|||
|
|||
<style scoped> |
|||
</style> |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue