345 lines
13 KiB
Vue
345 lines
13 KiB
Vue
<template>
|
|
<v-container fluid class="bg-indigo-darken-4">
|
|
<v-row>
|
|
<v-col cols="8">
|
|
<v-card color="blue-darken-4" class="left-content">
|
|
<v-tabs v-model="tab" bg-color="primary">
|
|
<v-tab value="报工">报工</v-tab>
|
|
<v-tab value="历史报工记录">历史报工记录</v-tab>
|
|
</v-tabs>
|
|
<v-card-text>
|
|
<v-fade-transition>
|
|
<v-tabs-window v-model="tab">
|
|
<v-tabs-window-item value="报工">
|
|
<el-card v-if="formData.workorder" class="mt-4">
|
|
<v-text-field type="number" :label="processId === 10 ? '报工数' : '完成数'"
|
|
v-model="formData.finishNum"></v-text-field>
|
|
<v-text-field type="number" label="不良数"
|
|
v-model="formData.badNum"></v-text-field>
|
|
<v-text-field v-if="processId === 10" label="炉号"
|
|
v-model="formData.stoveCode"></v-text-field>
|
|
<v-text-field v-if="processId === 10" label="进料单"
|
|
v-model="formData.feedOrder"></v-text-field>
|
|
<v-text-field v-if="processId === 90" label="客户定单"
|
|
v-model="formData.customerOrder"></v-text-field>
|
|
<v-text-field label="作业员" v-model="formData.worker"></v-text-field>
|
|
<div class="d-flex justify-end">
|
|
<v-btn class="bg-blue-darken-1" @click="submit">{{ getButtonName()
|
|
}}</v-btn>
|
|
</div>
|
|
</el-card>
|
|
</v-tabs-window-item>
|
|
<v-tabs-window-item value="历史报工记录">
|
|
<el-card v-if="formData.workorder" class="mt-4">
|
|
<v-list lines="two" class="bg-transparent">
|
|
<v-list-item v-for="(item, index) in reportWorkerOrderList" :key="index"
|
|
:title="item.processName">
|
|
<v-list-item-subtitle class="d-flex justify-space-between">
|
|
<span class="text-subtitle-1">
|
|
{{
|
|
`完成数:${item.finishNum ?? 0} 不良数:${item.badNum ?? 0}`
|
|
}}
|
|
</span>
|
|
<span>{{ `作业员:${item.worker} 提交时间:${item.jobDate}` }}</span>
|
|
</v-list-item-subtitle>
|
|
</v-list-item>
|
|
</v-list>
|
|
</el-card>
|
|
</v-tabs-window-item>
|
|
</v-tabs-window>
|
|
</v-fade-transition>
|
|
</v-card-text>
|
|
</v-card>
|
|
</v-col>
|
|
<v-col cols="4">
|
|
<v-card color="blue-darken-4" class="right-content">
|
|
<v-select variant="solo-filled" v-model="processId" label="工序选择" :items="processOptions">
|
|
</v-select>
|
|
<scanInput @scanInput="handleScanInput"></scanInput>
|
|
<v-fade-transition>
|
|
<el-card v-if="formData.workorder" class="mt-4">
|
|
<el-form :model="formData" label-width="auto" label-suffix=":">
|
|
<el-form-item label="工单号">
|
|
<el-text class="formItem text-big">{{ formData.workorder }}</el-text>
|
|
</el-form-item>
|
|
<el-form-item v-if="processId !== 10" label="炉号">
|
|
<el-text class="formItem">{{ formData.stoveCode }}</el-text>
|
|
</el-form-item>
|
|
<el-form-item label="主体型号">
|
|
<el-text class="formItem">{{ formData.productionCode }}</el-text>
|
|
</el-form-item>
|
|
<el-form-item label="主体品名">
|
|
<el-text class="formItem">{{ formData.productionName }}</el-text>
|
|
</el-form-item>
|
|
<el-form-item label="计划数量">
|
|
<el-text class="formItem">{{ formData.planNum }}</el-text>
|
|
</el-form-item>
|
|
<el-form-item label="主体图号">
|
|
<el-text class="formItem">{{ formData.drawingCode }}</el-text>
|
|
</el-form-item>
|
|
<el-form-item label="版本号">
|
|
<el-text class="formItem">{{ formData.version }}</el-text>
|
|
</el-form-item>
|
|
<el-form-item label="材料编号">
|
|
<el-text class="formItem">{{ formData.materialCode }}</el-text>
|
|
</el-form-item>
|
|
<el-form-item label="材料型号">
|
|
<el-text class="formItem">{{ formData.materialName }}</el-text>
|
|
</el-form-item>
|
|
<el-form-item label="材质">
|
|
<el-text class="formItem">{{ formData.materialtextureCode }}</el-text>
|
|
</el-form-item>
|
|
<el-form-item label="工单日期">
|
|
<el-text class="formItem">{{ formData.workorderDate }}</el-text>
|
|
</el-form-item>
|
|
<el-form-item label="指示日期">
|
|
<el-text class="formItem">{{ formData.instructionDate }}</el-text>
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-card>
|
|
</v-fade-transition>
|
|
</v-card>
|
|
</v-col>
|
|
</v-row>
|
|
<!-- 反馈框 -->
|
|
<v-dialog v-model="dialog.show" width="auto">
|
|
<v-card :class="dialog.class" min-width="400" :prepend-icon="dialog.icon" :text="dialog.text"
|
|
:title="dialog.title">
|
|
<template v-slot:actions>
|
|
<v-btn class="ms-auto" text="确认" @click="dialog.show = false"></v-btn>
|
|
</template>
|
|
</v-card>
|
|
</v-dialog>
|
|
</v-container>
|
|
</template>
|
|
|
|
<script setup>
|
|
const { proxy } = getCurrentInstance()
|
|
import * as ReportApi from '@/api/reportFlow/index'
|
|
import scanInput from '../components/scanInput.vue'
|
|
const processOptions = [
|
|
{
|
|
value: 10,
|
|
title: '物料领用',
|
|
},
|
|
{
|
|
value: 20,
|
|
title: '机械加工',
|
|
},
|
|
{
|
|
value: 30,
|
|
title: '中间检查',
|
|
},
|
|
{
|
|
value: 40,
|
|
title: '手工研磨',
|
|
},
|
|
{
|
|
value: 50,
|
|
title: '机研磨',
|
|
},
|
|
{
|
|
value: 60,
|
|
title: '精研磨',
|
|
},
|
|
{
|
|
value: 70,
|
|
title: '入库检查',
|
|
},
|
|
// {
|
|
// value: 80,
|
|
// title: '出厂',
|
|
// },
|
|
{
|
|
value: 90,
|
|
title: '出货',
|
|
},
|
|
]
|
|
const tab = ref('报工')
|
|
const processId = ref(10)
|
|
function getButtonName() {
|
|
if (processId.value === 10) {
|
|
return '确认领用'
|
|
} else if (processId.value === 90) {
|
|
return '确认出货'
|
|
} else {
|
|
return '确认报工'
|
|
}
|
|
|
|
}
|
|
const dialog = reactive({
|
|
show: false,
|
|
icon: 'mdi-alert',
|
|
class: 'bg-amber',
|
|
title: '提示',
|
|
text: '这是一段反馈'
|
|
})
|
|
|
|
const formData = ref({
|
|
id: null,
|
|
workorder: '',
|
|
instructionDate: '',
|
|
workorderDate: '',
|
|
planNum: 0,
|
|
finishNum: 0,
|
|
// productionName: '产品名称',
|
|
// productionCode: '产品编码',
|
|
// unit: '单位',
|
|
// planNum: '计划数量',
|
|
// sort: '排序',
|
|
// workorderDate: '工单日期',
|
|
// priority: '优先级',
|
|
// beat: '节拍',
|
|
// status: '状态',
|
|
// instructionDate: '指导日期',
|
|
// materialName: '材料名称',
|
|
// materialtextureCode: '材质编码',
|
|
// materialCode: '材料编码',
|
|
// drawingCode: '图纸编码',
|
|
// version: '版本',
|
|
// stoveCode: '炉子编码',
|
|
// workshopCode: '车间编码',
|
|
// routeCode: '路线编码',
|
|
// groupCode: '组编码'
|
|
})
|
|
|
|
const reportWorkerOrderList = ref([])
|
|
|
|
function handleScanInput(val) {
|
|
getFormData(val)
|
|
}
|
|
|
|
function getFormData(workorder) {
|
|
const params = { workorder, processId: processId.value }
|
|
ReportApi.GetWorkOrderDetail(params).then(res => {
|
|
if (res.code == 200) {
|
|
if (res.data) {
|
|
formData.value = res.data
|
|
ReportApi.GetProcessReportWorkDetail(params).then(res2 => {
|
|
if (!res2.data) {
|
|
formData.value.finishNum = 0;
|
|
formData.value.badNum = 0;
|
|
formData.value.worker = '';
|
|
}
|
|
else {
|
|
formData.value.finishNum = res2.data.finishNum ?? 0;
|
|
formData.value.badNum = res2.data.badNum ?? 0;
|
|
formData.value.worker = res2.data.worker;
|
|
if (formData.value.finishNum > 0) {
|
|
dialog.show = true
|
|
dialog.class = 'bg-yellow'
|
|
dialog.title = '提示'
|
|
dialog.text = '工单此工序已报工过'
|
|
}
|
|
}
|
|
})
|
|
ReportApi.GetWorkOrderReportWorkList(params).then(res => {
|
|
if (res.code == 200) {
|
|
reportWorkerOrderList.value = res.data
|
|
}
|
|
})
|
|
} else {
|
|
dialog.show = true
|
|
dialog.class = 'bg-amber'
|
|
dialog.title = '工单提示'
|
|
dialog.text = '工单号不正确,没有找到该工单'
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
function submit() {
|
|
proxy.$confirm('确定提交数据吗?').then(() => {
|
|
let params = {
|
|
workorder: formData.value.workorder,
|
|
processId: processId.value,
|
|
// 参数填写
|
|
bad_num: formData.value.badNum,
|
|
finish_num: formData.value.finishNum,
|
|
feed_order: formData.value.feedOrder,
|
|
stove_code: formData.value.stoveCode,
|
|
customer_order: formData.value.customerOrder,
|
|
process_operator: formData.value.worker
|
|
};
|
|
// 领料
|
|
if (processId.value === 10) {
|
|
ReportApi.FeedProcessReportwork(params).then(res => {
|
|
if (res.code == 200) {
|
|
dialog.show = true
|
|
dialog.class = 'bg-green'
|
|
dialog.title = '成功提示'
|
|
dialog.text = '领料成功'
|
|
}
|
|
})
|
|
}
|
|
// 出货
|
|
else if (processId.value === 90) {
|
|
ReportApi.ShipmentProcessReportwork(params).then(res => {
|
|
if (res.code == 200) {
|
|
dialog.show = true
|
|
dialog.class = 'bg-green'
|
|
dialog.title = '成功提示'
|
|
dialog.text = '出货成功'
|
|
}
|
|
}
|
|
)
|
|
}
|
|
// 报工
|
|
else {
|
|
ReportApi.ProcessReportWork(params).then(res => {
|
|
if (res.code == 200) {
|
|
dialog.show = true
|
|
dialog.class = 'bg-green'
|
|
dialog.title = '成功提示'
|
|
dialog.text = '报工成功'
|
|
}
|
|
}
|
|
)
|
|
}
|
|
}).catch(err => {
|
|
})
|
|
}
|
|
|
|
</script>
|
|
|
|
<style scoped>
|
|
.label {
|
|
color: #E6F4F1;
|
|
margin-right: 10px;
|
|
}
|
|
|
|
.text-big {
|
|
font-size: 24px;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.flex {
|
|
display: flex;
|
|
}
|
|
|
|
.justify-end {
|
|
justify-content: flex-end;
|
|
}
|
|
|
|
:deep(.el-form-item__label) {
|
|
color: #000000;
|
|
}
|
|
|
|
.formItem {
|
|
color: #000000;
|
|
}
|
|
|
|
.form-input {
|
|
width: 100%;
|
|
}
|
|
|
|
.left-content {
|
|
min-height: 88vh;
|
|
padding: 20px;
|
|
}
|
|
|
|
.right-content {
|
|
min-height: 88vh;
|
|
padding: 20px;
|
|
}
|
|
</style> |