Browse Source

2024/1/17 返工返修记录

master
zelian_wu 2 years ago
parent
commit
e303d0a1ab
  1. 3
      src/api/production/generateReport.js
  2. 586
      src/views/modules/production/reworkRecord.vue

3
src/api/production/generateReport.js

@ -56,4 +56,7 @@ export const getOrderView=data => createAPI(`dailyPlan/getOrderView`, 'post', da
export const selectSFDCToolHist = data =>createAPI(`dailyPlan/selectToolHist`,'post',data)
export const selectToolingHist = data =>createAPI(`dailyPlan/selectToolingHist`,'post',data)
export const startRework = data =>createAPI(`/dailyPlan/startRework`,'post',data)
export const selectRework = data =>createAPI(`/dailyPlan/selectRework`,'post',data)
export const saveRework = data =>createAPI(`/dailyPlan/saveRework`,'post',data)

586
src/views/modules/production/reworkRecord.vue

@ -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,//01
}
},
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>
Loading…
Cancel
Save