400 lines
12 KiB
Vue
400 lines
12 KiB
Vue
|
|
<template>
|
|||
|
|
<view style="background-color: #fff;">
|
|||
|
|
<uni-forms ref="form" :modelValue="formData" :rules="rules">
|
|||
|
|
<uni-row>
|
|||
|
|
|
|||
|
|
<uni-col :span="24">
|
|||
|
|
<uni-forms-item label="作业编码" :labelWidth='80' name="pwoJobCode">
|
|||
|
|
<uni-easyinput suffixIcon="scan" @iconClick="scanBar" type="text" v-model="formData.pwoJobCode"
|
|||
|
|
@confirm="scanBarCode" />
|
|||
|
|
</uni-forms-item>
|
|||
|
|
</uni-col>
|
|||
|
|
<uni-col :span="24">
|
|||
|
|
<uni-forms-item label="工单" :labelWidth='80' name="pwoCode">
|
|||
|
|
<uni-easyinput disabled type="text" v-model="formData.pwoCode" />
|
|||
|
|
</uni-forms-item>
|
|||
|
|
</uni-col>
|
|||
|
|
<uni-col :span="24">
|
|||
|
|
<uni-forms-item label="产品编码" :labelWidth='80' name="ptNoTar">
|
|||
|
|
<uni-easyinput disabled type="text" v-model="formData.ptNoTar" />
|
|||
|
|
</uni-forms-item>
|
|||
|
|
</uni-col>
|
|||
|
|
<uni-col :span="24">
|
|||
|
|
<uni-forms-item label="产品名称" :labelWidth='80' name="ptTitleTar">
|
|||
|
|
<uni-easyinput disabled type="text" v-model="formData.ptTitleTar" />
|
|||
|
|
</uni-forms-item>
|
|||
|
|
</uni-col>
|
|||
|
|
<uni-col :span="24">
|
|||
|
|
<uni-forms-item label="设备编号" :labelWidth='80' name="machineId">
|
|||
|
|
<uni-easyinput disabled type="text" v-model="formData.machineId" />
|
|||
|
|
</uni-forms-item>
|
|||
|
|
</uni-col>
|
|||
|
|
<uni-col :span="24">
|
|||
|
|
<uni-forms-item label="批号" :labelWidth='80' name="batchNo">
|
|||
|
|
<uni-easyinput disabled type="text" v-model="formData.batchNo" />
|
|||
|
|
</uni-forms-item>
|
|||
|
|
</uni-col>
|
|||
|
|
<uni-col :span="12">
|
|||
|
|
<uni-forms-item label="制程编码" :labelWidth='80' name="opCode">
|
|||
|
|
<uni-easyinput disabled type="text" v-model="formData.opCode" />
|
|||
|
|
</uni-forms-item>
|
|||
|
|
</uni-col>
|
|||
|
|
<uni-col :span="12">
|
|||
|
|
<uni-forms-item label="制程名称" :labelWidth='80' name="opTitle">
|
|||
|
|
<uni-easyinput disabled type="text" v-model="formData.opTitle" />
|
|||
|
|
</uni-forms-item>
|
|||
|
|
</uni-col>
|
|||
|
|
<uni-col :span="12">
|
|||
|
|
<uni-forms-item label="用时(s)" :labelWidth='80' name="timeTake">
|
|||
|
|
<uni-easyinput type="number" v-model="formData.timeTake" />
|
|||
|
|
</uni-forms-item>
|
|||
|
|
</uni-col>
|
|||
|
|
<uni-col :span="24">
|
|||
|
|
<uni-forms-item label="生产员工编码" :labelWidth='80' name="createByCode">
|
|||
|
|
<uni-easyinput type="text" suffixIcon="scan" @iconClick="scanBar1" @confirm="scanBarCreateBy"
|
|||
|
|
v-model="formData.createByCode" />
|
|||
|
|
</uni-forms-item>
|
|||
|
|
</uni-col>
|
|||
|
|
<uni-col :span="24">
|
|||
|
|
<uni-forms-item label="生产员工" :labelWidth='80' name="createByName">
|
|||
|
|
<uni-easyinput disabled type="text" v-model="formData.createByName" />
|
|||
|
|
</uni-forms-item>
|
|||
|
|
<u-divider :text="'可报工数量:'+reportableNum"></u-divider>
|
|||
|
|
</uni-col>
|
|||
|
|
<uni-col :span="24">
|
|||
|
|
<uni-forms-item label="合格数量" :labelWidth='70' name="pass">
|
|||
|
|
<u-number-box button-size="36" inputWidth="120"
|
|||
|
|
v-model="formData.mesJobReportOnceRequestDTO.pass.reportNumber" min="0"></u-number-box>
|
|||
|
|
</uni-forms-item>
|
|||
|
|
</uni-col>
|
|||
|
|
<uni-col :span="24">
|
|||
|
|
<uni-forms-item label="不良数量" :labelWidth='70' name="defect">
|
|||
|
|
<u-number-box button-size="36" inputWidth="120"
|
|||
|
|
v-model="formData.mesJobReportOnceRequestDTO.defect.reportNumber" min="0"></u-number-box>
|
|||
|
|
</uni-forms-item>
|
|||
|
|
</uni-col>
|
|||
|
|
<uni-col :span="24">
|
|||
|
|
<uni-forms-item label="不良原因" :labelWidth='70' name="defectReason">
|
|||
|
|
<uni-data-select v-model="formData.mesJobReportOnceRequestDTO['defect'].reason"
|
|||
|
|
:localdata="defectReasonOptions"></uni-data-select>
|
|||
|
|
</uni-forms-item>
|
|||
|
|
</uni-col>
|
|||
|
|
|
|||
|
|
<uni-col :span="24">
|
|||
|
|
<uni-forms-item label="报废数量" :labelWidth='70' name="scrap">
|
|||
|
|
<u-number-box button-size="36" inputWidth="120"
|
|||
|
|
v-model="formData.mesJobReportOnceRequestDTO.scrap.reportNumber" min="0"></u-number-box>
|
|||
|
|
</uni-forms-item>
|
|||
|
|
</uni-col>
|
|||
|
|
<uni-col :span="24">
|
|||
|
|
<uni-forms-item label="报废原因" :labelWidth='70' name="scrapReason">
|
|||
|
|
<uni-data-select v-model="formData.mesJobReportOnceRequestDTO['scrap'].reason"
|
|||
|
|
:localdata="scrapReasonOptions"></uni-data-select>
|
|||
|
|
</uni-forms-item>
|
|||
|
|
</uni-col>
|
|||
|
|
<uni-col :span="24">
|
|||
|
|
<uni-forms-item label="损耗数量" :labelWidth='70' name="loss">
|
|||
|
|
<u-number-box button-size="36" inputWidth="120"
|
|||
|
|
v-model="formData.mesJobReportOnceRequestDTO.loss.reportNumber" min="0"></u-number-box>
|
|||
|
|
</uni-forms-item>
|
|||
|
|
</uni-col>
|
|||
|
|
<uni-col :span="24">
|
|||
|
|
<uni-forms-item label="损耗原因" :labelWidth='70' name="lossReason">
|
|||
|
|
<uni-data-select v-model="formData.mesJobReportOnceRequestDTO['loss'].reason"
|
|||
|
|
:localdata="lossReasonOptions"></uni-data-select>
|
|||
|
|
</uni-forms-item>
|
|||
|
|
</uni-col>
|
|||
|
|
<uni-col :span="24">
|
|||
|
|
<uni-forms-item label="开工时间" :labelWidth='90'>
|
|||
|
|
<view class="example-body">
|
|||
|
|
<uni-datetime-picker type="datetime" v-model="formData.startTime" />
|
|||
|
|
</view>
|
|||
|
|
</uni-forms-item>
|
|||
|
|
</uni-col>
|
|||
|
|
<uni-col :span="24">
|
|||
|
|
<uni-forms-item label="完工时间" :labelWidth='90' name="endTime">
|
|||
|
|
<view class="example-body">
|
|||
|
|
<uni-datetime-picker type="datetime" v-model="formData.endTime" />
|
|||
|
|
</view>
|
|||
|
|
</uni-forms-item>
|
|||
|
|
</uni-col>
|
|||
|
|
</uni-row>
|
|||
|
|
</uni-forms>
|
|||
|
|
<u-button type="primary" @click="submit">提交</u-button>
|
|||
|
|
<!-- <u-button type="primary" @click="end">关闭</u-button> -->
|
|||
|
|
</view>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script>
|
|||
|
|
import {
|
|||
|
|
listPwoJob,
|
|||
|
|
addReport,
|
|||
|
|
getEquipment,
|
|||
|
|
addReportOnce
|
|||
|
|
} from "@/api/mes/jobReport.js";
|
|||
|
|
import {
|
|||
|
|
listEmpEqpHistory,
|
|||
|
|
listEmployee,
|
|||
|
|
listConversion
|
|||
|
|
} from "@/api/mes/jobIn.js";
|
|||
|
|
import {
|
|||
|
|
getDicts
|
|||
|
|
} from "@/api/system/dict/dictData.js";
|
|||
|
|
// const serialPort = uni.requireNativePlugin('Fvv-UniSerialPort')
|
|||
|
|
export default {
|
|||
|
|
onLoad: function(option) {
|
|||
|
|
if (option.code) {
|
|||
|
|
this.isSearchRoute = true;
|
|||
|
|
this.formData.pwoJobCode = option.code;
|
|||
|
|
this.scanBarCode();
|
|||
|
|
}
|
|||
|
|
// 获取当前时间
|
|||
|
|
var currentDate = new Date();
|
|||
|
|
// 格式化为字符串(YYYY-MM-DD HH:mm:ss)
|
|||
|
|
var year = currentDate.getFullYear();
|
|||
|
|
var month = ("0" + (currentDate.getMonth() + 1)).slice(-2);
|
|||
|
|
var day = ("0" + currentDate.getDate()).slice(-2);
|
|||
|
|
var hours = ("0" + currentDate.getHours()).slice(-2);
|
|||
|
|
var minutes = ("0" + currentDate.getMinutes()).slice(-2);
|
|||
|
|
var seconds = ("0" + currentDate.getSeconds()).slice(-2);
|
|||
|
|
var formattedDate = year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;
|
|||
|
|
// 将当前时间赋值给 formData.endTime
|
|||
|
|
this.formData.endTime = formattedDate;
|
|||
|
|
this.formData.way = '人工报工';
|
|||
|
|
this.getOptions();
|
|||
|
|
// this.formData.type = '报废品';
|
|||
|
|
// this.formData.createByName = this.$store.state.user.name;
|
|||
|
|
},
|
|||
|
|
data() {
|
|||
|
|
return {
|
|||
|
|
//判断是否从工单状态页面查询过来
|
|||
|
|
isSearchRoute: false,
|
|||
|
|
lossReasonOptions: [],
|
|||
|
|
scrapReasonOptions: [],
|
|||
|
|
defectReasonOptions: [],
|
|||
|
|
formData: {
|
|||
|
|
pwoJobCode: null,
|
|||
|
|
pwoCode: null,
|
|||
|
|
ptNoTar: null,
|
|||
|
|
ptTitleTar: null,
|
|||
|
|
machineId: null,
|
|||
|
|
batchNo: null,
|
|||
|
|
createByName: null,
|
|||
|
|
createByCode: null,
|
|||
|
|
mesJobReportOnceRequestDTO: {
|
|||
|
|
pass: {
|
|||
|
|
reportNumber: 0,
|
|||
|
|
reason: null
|
|||
|
|
},
|
|||
|
|
defect: {
|
|||
|
|
reportNumber: 0,
|
|||
|
|
reason: null
|
|||
|
|
},
|
|||
|
|
scrap: {
|
|||
|
|
reportNumber: 0,
|
|||
|
|
reason: null
|
|||
|
|
},
|
|||
|
|
loss: {
|
|||
|
|
reportNumber: 0,
|
|||
|
|
reason: null
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
startTime: null,
|
|||
|
|
endTime: null,
|
|||
|
|
},
|
|||
|
|
reportableNum: 0,
|
|||
|
|
rules: {
|
|||
|
|
pwoJobCode: {
|
|||
|
|
rules: [{
|
|||
|
|
required: true,
|
|||
|
|
errorMessage: '请输入作业编码!'
|
|||
|
|
}]
|
|||
|
|
},
|
|||
|
|
createByCode: {
|
|||
|
|
rules: [{
|
|||
|
|
required: true,
|
|||
|
|
errorMessage: '请输入生产员工编码!'
|
|||
|
|
}]
|
|||
|
|
},
|
|||
|
|
endTime: {
|
|||
|
|
rules: [{
|
|||
|
|
required: true,
|
|||
|
|
errorMessage: '请输入完工时间!'
|
|||
|
|
}]
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
created: function(option) {
|
|||
|
|
// const self = this
|
|||
|
|
// serialPort.getAllDeviceList(res => {
|
|||
|
|
// console.log('//设备列表', res)
|
|||
|
|
// })
|
|||
|
|
// serialPort.getAllDevicePath(res => {
|
|||
|
|
// console.log('//路径列表', res)
|
|||
|
|
// }),
|
|||
|
|
// setTimeout(() => {
|
|||
|
|
// serialPort.setPath('/dev/ttyUSB0')
|
|||
|
|
// serialPort.setBaudRate(9600)
|
|||
|
|
// serialPort.open(res => {
|
|||
|
|
// if (!res.status) {
|
|||
|
|
// uni.showToast({
|
|||
|
|
// title: res.msg,
|
|||
|
|
// duration: 2000,
|
|||
|
|
// icon: "none"
|
|||
|
|
// });
|
|||
|
|
// return
|
|||
|
|
// }
|
|||
|
|
// serialPort.onMessage(rec => {
|
|||
|
|
// this.onMessage(rec);
|
|||
|
|
// }, send => {
|
|||
|
|
// console.log(send)
|
|||
|
|
// })
|
|||
|
|
// })
|
|||
|
|
// }, 10000)
|
|||
|
|
},
|
|||
|
|
methods: {
|
|||
|
|
test() {
|
|||
|
|
serialPort.sendHex("A00102A3")
|
|||
|
|
},
|
|||
|
|
end() {
|
|||
|
|
serialPort.sendHex("A00100A1")
|
|||
|
|
},
|
|||
|
|
getOptions() {
|
|||
|
|
getDicts("mes_job_report_defect").then(res => {
|
|||
|
|
this.defectReasonOptions = res.data.map(dict => {
|
|||
|
|
return {
|
|||
|
|
text: dict.dictLabel,
|
|||
|
|
value: dict.dictValue,
|
|||
|
|
diasble: false
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
})
|
|||
|
|
getDicts("mes_job_report_scrap").then(res => {
|
|||
|
|
this.scrapReasonOptions = res.data.map(dict => {
|
|||
|
|
return {
|
|||
|
|
text: dict.dictLabel,
|
|||
|
|
value: dict.dictValue,
|
|||
|
|
diasble: false
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
})
|
|||
|
|
getDicts("mes_job_report_loss").then(res => {
|
|||
|
|
this.lossReasonOptions = res.data.map(dict => {
|
|||
|
|
return {
|
|||
|
|
text: dict.dictLabel,
|
|||
|
|
value: dict.dictValue,
|
|||
|
|
diasble: false
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
submit() {
|
|||
|
|
this.$refs.form.validate().then(res => {
|
|||
|
|
this.formData.mesJobReportOnceRequestDTO.pass.reportNumber = Number(this.formData
|
|||
|
|
.mesJobReportOnceRequestDTO.pass.reportNumber);
|
|||
|
|
this.formData.mesJobReportOnceRequestDTO.defect.reportNumber = Number(this.formData
|
|||
|
|
.mesJobReportOnceRequestDTO.defect.reportNumber);
|
|||
|
|
this.formData.mesJobReportOnceRequestDTO.scrap.reportNumber = Number(this.formData
|
|||
|
|
.mesJobReportOnceRequestDTO.scrap.reportNumber);
|
|||
|
|
console.log(this.formData);
|
|||
|
|
this.$modal.loading('提交中')
|
|||
|
|
addReportOnce(this.formData).then(res => {
|
|||
|
|
this.$modal.closeLoading();
|
|||
|
|
this.$modal.msgSuccess("报工成功!");
|
|||
|
|
if (this.isSearchRoute = true) {
|
|||
|
|
setTimeout(() => {
|
|||
|
|
this.$tab.navigateBack();
|
|||
|
|
}, 500);
|
|||
|
|
} else {
|
|||
|
|
setTimeout(() => {
|
|||
|
|
this.$tab.switchTab("/pages/work/index");
|
|||
|
|
}, 500);
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
scanBarCode() {
|
|||
|
|
if (this.formData.pwoJobCode) {
|
|||
|
|
let obj = {
|
|||
|
|
code: this.formData.pwoJobCode
|
|||
|
|
}
|
|||
|
|
listPwoJob(obj).then(async res => {
|
|||
|
|
let jobs = res.rows;
|
|||
|
|
if (jobs.length == 0) {
|
|||
|
|
this.$modal.msg("未检索到该作业编码相关的信息!");
|
|||
|
|
} else {
|
|||
|
|
let job = jobs[0];
|
|||
|
|
console.log(job);
|
|||
|
|
this.formData.pwoCode = job.pwoCode;
|
|||
|
|
this.formData.ptNoTar = job.ptNoTar;
|
|||
|
|
this.formData.ptTitleTar = job.ptTitleTar;
|
|||
|
|
this.formData.opCode = job.opCode;
|
|||
|
|
this.formData.opTitle = job.opTitle;
|
|||
|
|
this.reportableNum = job.targetNum - job.finishQty;
|
|||
|
|
if (job.eqpId) {
|
|||
|
|
await getEquipment(job.eqpId).then(res => {
|
|||
|
|
console.log(res);
|
|||
|
|
this.formData.machineId = res.data.equipmentCode;
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
//调取最后一条转入记录的操作人
|
|||
|
|
let code = {
|
|||
|
|
powJobCode: this.formData.pwoJobCode
|
|||
|
|
}
|
|||
|
|
listConversion(code).then(async res => {
|
|||
|
|
if (res.rows[0].operateBy && res.rows[0].operateBy != "") {
|
|||
|
|
this.formData.createByName = res.rows[0].operateBy;
|
|||
|
|
let arry = {
|
|||
|
|
name: this.formData.createByName
|
|||
|
|
}
|
|||
|
|
listEmployee(arry).then(async res => {
|
|||
|
|
this.formData.createByCode = res.rows[0]
|
|||
|
|
.empCode;
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
this.formData.batchNo = job.batchNo;
|
|||
|
|
console.log(this.formData);
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
scanBarCreateBy() {
|
|||
|
|
if (this.formData.createByCode) {
|
|||
|
|
let obj = {
|
|||
|
|
empCode: this.formData.createByCode
|
|||
|
|
}
|
|||
|
|
listEmployee(obj).then(async res => {
|
|||
|
|
if (res.rows.length != 0) {
|
|||
|
|
this.formData.createByName = res.rows[0].name;
|
|||
|
|
} else {
|
|||
|
|
this.$modal.msg("未查询到该人员信息!");
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
scanBar() {
|
|||
|
|
const _this = this;
|
|||
|
|
uni.scanCode({
|
|||
|
|
scanType: ['barCode', 'qrCode'],
|
|||
|
|
success: function(res) {
|
|||
|
|
_this.formData.pwoJobCode = res.result;
|
|||
|
|
_this.scanBarCode(_this.formData.pwoJobCode);
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
scanBar1() {
|
|||
|
|
const _this = this;
|
|||
|
|
uni.scanCode({
|
|||
|
|
scanType: ['barCode', 'qrCode'],
|
|||
|
|
success: function(res) {
|
|||
|
|
_this.formData.createByCode = res.result;
|
|||
|
|
_this.scanBarCreateBy();
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
</script>
|