feat(不良品管理): 添加工单不良品单功能并优化审批流程
添加根据工单创建不良品单的API接口和前端功能,替换原有的报废单和转用单功能 优化不良品记录审批流程,增加审批对话框和状态显示 调整不良品记录表格列和表单字段,简化界面并增强用户体验
This commit is contained in:
@@ -140,6 +140,18 @@ export function createTransferOrderByWorkorder(data) {
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据工单号填写不良品单
|
||||
* @param {不良品单数据} data
|
||||
*/
|
||||
export function createDefectOrderByWorkorder(data) {
|
||||
return request({
|
||||
url: 'mes/qualityManagement/IPQC/QcScrapRecords/defectOrder/byWorkorder',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据不良品记录ID撤销不良品记录
|
||||
* @param {不良品记录ID} id
|
||||
|
||||
@@ -4,14 +4,13 @@
|
||||
:lock-scroll="false"
|
||||
:model-value="dialogVisible"
|
||||
@update:model-value="(val) => emit('update:dialogVisible', val)"
|
||||
width="70%"
|
||||
width="80%"
|
||||
draggable
|
||||
append-to-body
|
||||
:close-on-click-modal="false">
|
||||
<!-- 顶部操作按钮 -->
|
||||
<div class="top-actions mb20">
|
||||
<el-button type="primary" @click="handleCreateScrapOrder">报废单</el-button>
|
||||
<el-button type="success" @click="handleCreateTransferOrder">转用单</el-button>
|
||||
<el-button type="primary" @click="handleCreateDefectOrder">不良品单</el-button>
|
||||
</div>
|
||||
|
||||
<!-- 不良品记录列表 -->
|
||||
@@ -23,165 +22,88 @@
|
||||
<el-table-column prop="scrapQuantity" label="不良品数量" align="center" />
|
||||
<el-table-column prop="scrapType" label="不良品类型" align="center" />
|
||||
<el-table-column prop="scrapReason" label="不良品原因" align="center" />
|
||||
<el-table-column prop="status" label="状态" align="center" />
|
||||
<el-table-column prop="scrapDate" label="不良品日期" align="center" />
|
||||
<el-table-column label="操作" align="center" width="120">
|
||||
<el-table-column prop="status" label="状态" align="center">
|
||||
<template #default="scope">
|
||||
<el-tag v-if="scope.row.status === '草稿'" type="info">{{ scope.row.status }}</el-tag>
|
||||
<el-tag v-if="scope.row.status === '待审批'" type="warning">{{ scope.row.status }}</el-tag>
|
||||
<el-tag v-if="scope.row.status === '已批准'" type="success">{{ scope.row.status }}</el-tag>
|
||||
<el-tag v-if="scope.row.status === '已拒绝'" type="danger">{{ scope.row.status }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="operator" label="操作人" align="center" />
|
||||
<el-table-column prop="qualityInspector" label="质检人" align="center" />
|
||||
<el-table-column prop="supervisorName" label="审批人" align="center" />
|
||||
<el-table-column prop="scrapDate" label="不良品日期" align="center" />
|
||||
<el-table-column label="操作" align="center" width="180">
|
||||
<template #default="scope">
|
||||
<el-button type="warning" size="small" v-if="scope.row.status !== '已批准'" @click="handleApprove(scope.row)"> 审批 </el-button>
|
||||
<el-button type="info" size="small" v-if="scope.row.status === '已批准'" @click="handleRevoke(scope.row)"> 撤销 </el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
|
||||
<!-- 创建报废单对话框 -->
|
||||
<el-dialog append-to-body title="创建报废单" :lock-scroll="false" v-model="scrapOrderOpen" width="60%">
|
||||
<el-form ref="scrapOrderFormRef" :model="scrapOrderForm" :rules="scrapOrderRules" label-width="100px">
|
||||
<!-- 创建不良品单对话框 -->
|
||||
<el-dialog append-to-body :close-on-click-modal="false" title="创建不良品单" :lock-scroll="false" v-model="defectOrderOpen" width="50%">
|
||||
<el-form ref="defectOrderFormRef" :model="defectOrderForm" :rules="defectOrderRules" label-width="100px">
|
||||
<el-row :gutter="20">
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="主体型号" prop="materialCode">
|
||||
<el-input v-model="scrapOrderForm.materialCode" placeholder="主体型号" disabled />
|
||||
<el-input v-model="defectOrderForm.materialCode" placeholder="主体型号" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="主体品名" prop="materialName">
|
||||
<el-input v-model="scrapOrderForm.materialName" placeholder="主体品名" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="不良品类型" prop="scrapType">
|
||||
<el-select v-model="scrapOrderForm.scrapType" placeholder="请选择不良品类型" disabled>
|
||||
<el-option label="报废" value="报废" />
|
||||
</el-select>
|
||||
<el-input v-model="defectOrderForm.materialName" placeholder="主体品名" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="工单号" prop="workorder">
|
||||
<el-input v-model="transferOrderForm.workorder" disabled placeholder="请输入工单号" />
|
||||
<el-input v-model="defectOrderForm.workorder" disabled placeholder="请输入工单号" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="不良品类型" prop="scrapType">
|
||||
<el-select v-model="defectOrderForm.scrapType" placeholder="请选择不良品类型" disabled>
|
||||
<el-option label="不良品" value="不良品" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="不良品数量" prop="scrapQuantity">
|
||||
<el-input v-model="scrapOrderForm.scrapQuantity" placeholder="请输入不良品数量" />
|
||||
<el-input v-model="defectOrderForm.scrapQuantity" placeholder="请输入不良品数量" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :lg="24">
|
||||
<el-form-item label="不良品原因" prop="scrapReason">
|
||||
<el-input v-model="scrapOrderForm.scrapReason" placeholder="请输入不良品原因" type="textarea" :rows="3" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="24">
|
||||
<el-form-item label="处置方式" prop="disposalMethod">
|
||||
<el-input v-model="scrapOrderForm.disposalMethod" placeholder="请输入处置方式" type="textarea" :rows="3" />
|
||||
<el-form-item label="不良原因" prop="scrapReason">
|
||||
<el-input v-model="defectOrderForm.scrapReason" placeholder="请输入不良原因" type="textarea" :rows="3" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="操作员" prop="operator">
|
||||
<el-select v-model="scrapOrderForm.operator" filterable placeholder="请选择操作员">
|
||||
<el-select v-model="defectOrderForm.operator" filterable placeholder="请选择操作员">
|
||||
<el-option v-for="item in userOptions" :key="item.userId" :label="item.nickName" :value="item.nickName" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="质检员" prop="qualityInspector">
|
||||
<el-select v-model="scrapOrderForm.qualityInspector" filterable placeholder="请选择质检员">
|
||||
<el-select v-model="defectOrderForm.qualityInspector" filterable placeholder="请选择质检员">
|
||||
<el-option v-for="item in userOptions" :key="item.userId" :label="item.nickName" :value="item.nickName" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="报废日期" prop="scrapDate">
|
||||
<el-date-picker v-model="scrapOrderForm.scrapDate" type="datetime" placeholder="选择日期时间" value-format="YYYY-MM-DD HH:mm:ss" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="24">
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="scrapOrderForm.remark" placeholder="请输入备注" type="textarea" :rows="3" />
|
||||
<el-form-item label="发生时间" prop="scrapDate">
|
||||
<el-date-picker v-model="defectOrderForm.scrapDate" type="datetime" placeholder="选择日期时间" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button text @click="cancelScrapOrder">{{ $t('btn.cancel') }}</el-button>
|
||||
<el-button type="primary" @click="submitScrapOrder">{{ $t('btn.submit') }}</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 创建转用单对话框 -->
|
||||
<el-dialog append-to-body title="创建转用单" :lock-scroll="false" v-model="transferOrderOpen" width="60%">
|
||||
<el-form ref="transferOrderFormRef" :model="transferOrderForm" :rules="transferOrderRules" label-width="100px">
|
||||
<el-row :gutter="20">
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="主体型号" prop="materialCode">
|
||||
<el-input v-model="transferOrderForm.materialCode" placeholder="主体型号" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="主体品名" prop="materialName">
|
||||
<el-input v-model="transferOrderForm.materialName" placeholder="主体品名" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="工单号" prop="workorder">
|
||||
<el-input v-model="transferOrderForm.workorder" disabled placeholder="请输入工单号" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="不良品类型" prop="scrapType">
|
||||
<el-select v-model="transferOrderForm.scrapType" placeholder="请选择不良品类型" disabled>
|
||||
<el-option label="转用" value="转用" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="不良品数量" prop="scrapQuantity">
|
||||
<el-input v-model="transferOrderForm.scrapQuantity" placeholder="请输入不良品数量" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :lg="24">
|
||||
<el-form-item label="不良品原因" prop="scrapReason">
|
||||
<el-input v-model="transferOrderForm.scrapReason" placeholder="请输入不良品原因" type="textarea" :rows="3" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="24">
|
||||
<el-form-item label="处置方式" prop="disposalMethod">
|
||||
<el-input v-model="transferOrderForm.disposalMethod" placeholder="请输入处置方式" type="textarea" :rows="3" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="操作员" prop="operator">
|
||||
<el-select v-model="transferOrderForm.operator" filterable placeholder="请选择操作员">
|
||||
<el-option v-for="item in userOptions" :key="item.userId" :label="item.nickName" :value="item.nickName" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="质检员" prop="qualityInspector">
|
||||
<el-select v-model="transferOrderForm.qualityInspector" filterable placeholder="请选择质检员">
|
||||
<el-option v-for="item in userOptions" :key="item.userId" :label="item.nickName" :value="item.nickName" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="转用日期" prop="scrapDate">
|
||||
<el-date-picker
|
||||
v-model="transferOrderForm.scrapDate"
|
||||
type="datetime"
|
||||
placeholder="选择日期时间"
|
||||
value-format="YYYY-MM-DD HH:mm:ss" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="24">
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="transferOrderForm.remark" placeholder="请输入备注" type="textarea" :rows="3" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button text @click="cancelTransferOrder">{{ $t('btn.cancel') }}</el-button>
|
||||
<el-button type="primary" @click="submitTransferOrder">{{ $t('btn.submit') }}</el-button>
|
||||
<el-button text @click="cancelDefectOrder">{{ $t('btn.cancel') }}</el-button>
|
||||
<el-button type="primary" @click="submitDefectOrder">{{ $t('btn.submit') }}</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
@@ -193,6 +115,36 @@
|
||||
<el-button type="primary" @click="submitRevoke">{{ $t('btn.submit') }}</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 审批不良品记录对话框 -->
|
||||
<el-dialog append-to-body title="审批不良品记录" :lock-scroll="false" v-model="approveOpen" width="600px">
|
||||
<el-form ref="approveFormRef" :model="approveForm" :rules="approveRules" label-width="100px">
|
||||
<el-row :gutter="20">
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="审批结果" prop="isApproved">
|
||||
<el-radio-group v-model="approveForm.isApproved">
|
||||
<el-radio :value="true">批准</el-radio>
|
||||
<el-radio :value="false">拒绝</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="审批人" prop="approver">
|
||||
<el-input v-model="approveForm.approver" placeholder="请输入审批人姓名" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="24">
|
||||
<el-form-item label="审批备注" prop="remark">
|
||||
<el-input v-model="approveForm.remark" placeholder="请输入审批备注" type="textarea" :rows="3" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button text @click="cancelApprove">{{ $t('btn.cancel') }}</el-button>
|
||||
<el-button type="primary" @click="submitApprove">{{ $t('btn.submit') }}</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
@@ -200,9 +152,9 @@
|
||||
import { ref, reactive, toRefs, watch, getCurrentInstance } from 'vue'
|
||||
import {
|
||||
getQcScrapRecordsByWorkorder,
|
||||
createScrapOrderByWorkorder,
|
||||
createTransferOrderByWorkorder,
|
||||
revokeScrapRecordById
|
||||
createDefectOrderByWorkorder,
|
||||
revokeScrapRecordById,
|
||||
approveScrapRecord
|
||||
} from '@/api/qualityManagement/IPQC/qcscraprecords.js'
|
||||
import { listUser } from '@/api/system/user.js'
|
||||
|
||||
@@ -230,38 +182,26 @@ const defectList = ref([])
|
||||
const userOptions = ref([])
|
||||
|
||||
// 弹窗状态
|
||||
const scrapOrderOpen = ref(false)
|
||||
const transferOrderOpen = ref(false)
|
||||
const defectOrderOpen = ref(false)
|
||||
const revokeConfirmOpen = ref(false)
|
||||
const approveOpen = ref(false)
|
||||
|
||||
// 选中的记录
|
||||
const selectedRevokeId = ref(null)
|
||||
const selectedApproveId = ref(null)
|
||||
|
||||
// 表单引用
|
||||
const scrapOrderFormRef = ref()
|
||||
const transferOrderFormRef = ref()
|
||||
const defectOrderFormRef = ref()
|
||||
const approveFormRef = ref()
|
||||
|
||||
// 表单数据
|
||||
const state = reactive({
|
||||
scrapOrderForm: {
|
||||
materialCode: null,
|
||||
materialName: null,
|
||||
batchNo: null,
|
||||
scrapQuantity: null,
|
||||
scrapType: '报废',
|
||||
scrapReason: null,
|
||||
disposalMethod: null,
|
||||
operator: null,
|
||||
qualityInspector: null,
|
||||
scrapDate: null,
|
||||
remark: null
|
||||
},
|
||||
transferOrderForm: {
|
||||
defectOrderForm: {
|
||||
materialCode: null,
|
||||
materialName: null,
|
||||
workorder: null,
|
||||
scrapQuantity: null,
|
||||
scrapType: '转用',
|
||||
scrapType: '不良品',
|
||||
scrapReason: null,
|
||||
disposalMethod: null,
|
||||
operator: null,
|
||||
@@ -269,16 +209,7 @@ const state = reactive({
|
||||
scrapDate: null,
|
||||
remark: null
|
||||
},
|
||||
scrapOrderRules: {
|
||||
materialCode: [{ required: true, message: '主体型号不能为空', trigger: 'blur' }],
|
||||
scrapReason: [{ required: true, message: '不良品原因不能为空', trigger: 'blur' }],
|
||||
scrapQuantity: [{ required: true, message: '不良品数量不能为空', trigger: 'blur' }],
|
||||
// disposalMethod: [{ required: true, message: '处置方式不能为空', trigger: 'blur' }],
|
||||
operator: [{ required: true, message: '操作员不能为空', trigger: 'change' }],
|
||||
qualityInspector: [{ required: true, message: '质检员不能为空', trigger: 'change' }],
|
||||
scrapDate: [{ required: true, message: '报废日期不能为空', trigger: 'blur' }]
|
||||
},
|
||||
transferOrderRules: {
|
||||
defectOrderRules: {
|
||||
materialCode: [{ required: true, message: '主体型号不能为空', trigger: 'blur' }],
|
||||
workorder: [{ required: true, message: '工单号不能为空', trigger: 'blur' }],
|
||||
scrapReason: [{ required: true, message: '不良品原因不能为空', trigger: 'blur' }],
|
||||
@@ -286,11 +217,20 @@ const state = reactive({
|
||||
// disposalMethod: [{ required: true, message: '处置方式不能为空', trigger: 'blur' }],
|
||||
operator: [{ required: true, message: '操作员不能为空', trigger: 'change' }],
|
||||
qualityInspector: [{ required: true, message: '质检员不能为空', trigger: 'change' }],
|
||||
scrapDate: [{ required: true, message: '转用日期不能为空', trigger: 'blur' }]
|
||||
scrapDate: [{ required: true, message: '不良品日期不能为空', trigger: 'blur' }]
|
||||
},
|
||||
approveForm: {
|
||||
isApproved: true,
|
||||
approver: '',
|
||||
remark: null
|
||||
},
|
||||
approveRules: {
|
||||
isApproved: [{ required: true, message: '请选择是否批准', trigger: 'change' }],
|
||||
approver: [{ required: true, message: '审批人不能为空', trigger: 'blur' }]
|
||||
}
|
||||
})
|
||||
|
||||
const { scrapOrderForm, transferOrderForm, scrapOrderRules, transferOrderRules } = toRefs(state)
|
||||
const { defectOrderForm, defectOrderRules, approveForm, approveRules } = toRefs(state)
|
||||
|
||||
// 监听弹窗显示,加载不良品记录
|
||||
watch(
|
||||
@@ -345,37 +285,37 @@ function getUserList() {
|
||||
}
|
||||
}
|
||||
|
||||
// 打开创建报废单对话框
|
||||
function handleCreateScrapOrder() {
|
||||
resetScrapOrderForm()
|
||||
// 打开创建不良品单对话框
|
||||
function handleCreateDefectOrder() {
|
||||
resetDefectOrderForm()
|
||||
// 从工单信息带入数据
|
||||
scrapOrderForm.value.workorder = props.workorderInfo.workorder
|
||||
defectOrderForm.value.workorder = props.workorderInfo.workorder
|
||||
// 自动带入主体型号和主体品名
|
||||
if (props.workorderInfo.productionCode) {
|
||||
scrapOrderForm.value.materialCode = props.workorderInfo.productionCode
|
||||
defectOrderForm.value.materialCode = props.workorderInfo.productionCode
|
||||
}
|
||||
if (props.workorderInfo.productionName) {
|
||||
scrapOrderForm.value.materialName = props.workorderInfo.productionName
|
||||
defectOrderForm.value.materialName = props.workorderInfo.productionName
|
||||
}
|
||||
// 设置默认日期
|
||||
scrapOrderForm.value.scrapDate = new Date().toISOString().slice(0, 19).replace('T', ' ')
|
||||
scrapOrderOpen.value = true
|
||||
defectOrderForm.value.scrapDate = new Date().toISOString().slice(0, 19).replace('T', ' ')
|
||||
defectOrderOpen.value = true
|
||||
}
|
||||
|
||||
// 关闭创建报废单对话框
|
||||
function cancelScrapOrder() {
|
||||
scrapOrderOpen.value = false
|
||||
resetScrapOrderForm()
|
||||
// 关闭创建不良品单对话框
|
||||
function cancelDefectOrder() {
|
||||
defectOrderOpen.value = false
|
||||
resetDefectOrderForm()
|
||||
}
|
||||
|
||||
// 重置报废单表单
|
||||
function resetScrapOrderForm() {
|
||||
state.scrapOrderForm = {
|
||||
// 重置不良品单表单
|
||||
function resetDefectOrderForm() {
|
||||
state.defectOrderForm = {
|
||||
materialCode: null,
|
||||
materialName: null,
|
||||
batchNo: null,
|
||||
workorder: null,
|
||||
scrapQuantity: null,
|
||||
scrapType: '报废',
|
||||
scrapType: '不良品',
|
||||
scrapReason: null,
|
||||
disposalMethod: null,
|
||||
operator: null,
|
||||
@@ -383,90 +323,78 @@ function resetScrapOrderForm() {
|
||||
scrapDate: null,
|
||||
remark: null
|
||||
}
|
||||
proxy.resetForm('scrapOrderFormRef')
|
||||
proxy.resetForm('defectOrderFormRef')
|
||||
}
|
||||
|
||||
// 提交报废单
|
||||
function submitScrapOrder() {
|
||||
proxy.$refs['scrapOrderFormRef'].validate((valid) => {
|
||||
// 提交不良品单
|
||||
function submitDefectOrder() {
|
||||
proxy.$refs['defectOrderFormRef'].validate((valid) => {
|
||||
if (valid) {
|
||||
const formData = {
|
||||
...scrapOrderForm.value,
|
||||
...defectOrderForm.value,
|
||||
workorder: props.workorderInfo.workorder
|
||||
}
|
||||
|
||||
createScrapOrderByWorkorder(formData)
|
||||
// 使用创建不良品单的API
|
||||
createDefectOrderByWorkorder(formData)
|
||||
.then((res) => {
|
||||
if (res.code === 200) {
|
||||
proxy.$modal.msgSuccess('创建报废单成功')
|
||||
scrapOrderOpen.value = false
|
||||
proxy.$modal.msgSuccess('创建不良品单成功')
|
||||
defectOrderOpen.value = false
|
||||
getDefectList()
|
||||
emit('submit', { type: 'scrap', data: formData })
|
||||
emit('submit', { type: 'defect', data: formData })
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
proxy.$modal.msgError('创建报废单失败')
|
||||
proxy.$modal.msgError('创建不良品单失败')
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 打开创建转用单对话框
|
||||
function handleCreateTransferOrder() {
|
||||
resetTransferOrderForm()
|
||||
// 从工单信息带入数据
|
||||
transferOrderForm.value.workorder = props.workorderInfo.workorder
|
||||
// 自动带入主体型号和主体品名
|
||||
if (props.workorderInfo.productionCode) {
|
||||
transferOrderForm.value.materialCode = props.workorderInfo.productionCode
|
||||
}
|
||||
if (props.workorderInfo.productionName) {
|
||||
transferOrderForm.value.materialName = props.workorderInfo.productionName
|
||||
}
|
||||
// 设置默认日期
|
||||
transferOrderForm.value.scrapDate = new Date().toISOString().slice(0, 19).replace('T', ' ')
|
||||
transferOrderOpen.value = true
|
||||
// 打开审批不良品记录对话框
|
||||
function handleApprove(row) {
|
||||
selectedApproveId.value = row.id
|
||||
resetApproveForm()
|
||||
approveOpen.value = true
|
||||
}
|
||||
|
||||
// 关闭创建转用单对话框
|
||||
function cancelTransferOrder() {
|
||||
transferOrderOpen.value = false
|
||||
resetTransferOrderForm()
|
||||
// 关闭审批不良品记录对话框
|
||||
function cancelApprove() {
|
||||
approveOpen.value = false
|
||||
resetApproveForm()
|
||||
selectedApproveId.value = null
|
||||
}
|
||||
|
||||
// 重置转用单表单
|
||||
function resetTransferOrderForm() {
|
||||
state.transferOrderForm = {
|
||||
materialCode: null,
|
||||
materialName: null,
|
||||
workorder: null,
|
||||
scrapQuantity: null,
|
||||
scrapType: '转用',
|
||||
scrapReason: null,
|
||||
disposalMethod: null,
|
||||
operator: null,
|
||||
qualityInspector: null,
|
||||
scrapDate: null,
|
||||
// 重置审批表单
|
||||
function resetApproveForm() {
|
||||
state.approveForm = {
|
||||
isApproved: true,
|
||||
approver: '',
|
||||
remark: null
|
||||
}
|
||||
proxy.resetForm('transferOrderFormRef')
|
||||
proxy.resetForm('approveFormRef')
|
||||
}
|
||||
|
||||
// 提交转用单
|
||||
function submitTransferOrder() {
|
||||
proxy.$refs['transferOrderFormRef'].validate((valid) => {
|
||||
// 提交审批
|
||||
function submitApprove() {
|
||||
proxy.$refs['approveFormRef'].validate((valid) => {
|
||||
if (valid) {
|
||||
createTransferOrderByWorkorder(transferOrderForm.value)
|
||||
// 使用审批API
|
||||
approveScrapRecord(selectedApproveId.value, approveForm.value)
|
||||
.then((res) => {
|
||||
if (res.code === 200) {
|
||||
proxy.$modal.msgSuccess('创建转用单成功')
|
||||
transferOrderOpen.value = false
|
||||
proxy.$modal.msgSuccess('审批成功')
|
||||
approveOpen.value = false
|
||||
getDefectList()
|
||||
emit('submit', { type: 'transfer', data: transferOrderForm.value })
|
||||
emit('submit', { type: 'approve', data: { id: selectedApproveId.value, ...approveForm.value } })
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
proxy.$modal.msgError('创建转用单失败')
|
||||
proxy.$modal.msgError('审批失败')
|
||||
})
|
||||
.finally(() => {
|
||||
selectedApproveId.value = null
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user