feat(不良品管理): 添加工单不良品单功能并优化审批流程

添加根据工单创建不良品单的API接口和前端功能,替换原有的报废单和转用单功能
优化不良品记录审批流程,增加审批对话框和状态显示
调整不良品记录表格列和表单字段,简化界面并增强用户体验
This commit is contained in:
2026-02-20 10:44:29 +08:00
parent 470bf51114
commit 272ccff70f
2 changed files with 158 additions and 218 deletions

View File

@@ -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撤销不良品记录 * 根据不良品记录ID撤销不良品记录
* @param {不良品记录ID} id * @param {不良品记录ID} id

View File

@@ -4,14 +4,13 @@
:lock-scroll="false" :lock-scroll="false"
:model-value="dialogVisible" :model-value="dialogVisible"
@update:model-value="(val) => emit('update:dialogVisible', val)" @update:model-value="(val) => emit('update:dialogVisible', val)"
width="70%" width="80%"
draggable draggable
append-to-body append-to-body
:close-on-click-modal="false"> :close-on-click-modal="false">
<!-- 顶部操作按钮 --> <!-- 顶部操作按钮 -->
<div class="top-actions mb20"> <div class="top-actions mb20">
<el-button type="primary" @click="handleCreateScrapOrder">报废单</el-button> <el-button type="primary" @click="handleCreateDefectOrder">不良品单</el-button>
<el-button type="success" @click="handleCreateTransferOrder">转用单</el-button>
</div> </div>
<!-- 不良品记录列表 --> <!-- 不良品记录列表 -->
@@ -23,165 +22,88 @@
<el-table-column prop="scrapQuantity" label="不良品数量" align="center" /> <el-table-column prop="scrapQuantity" label="不良品数量" align="center" />
<el-table-column prop="scrapType" label="不良品类型" align="center" /> <el-table-column prop="scrapType" label="不良品类型" align="center" />
<el-table-column prop="scrapReason" label="不良品原因" align="center" /> <el-table-column prop="scrapReason" label="不良品原因" align="center" />
<el-table-column prop="status" 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">
<template #default="scope"> <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> <el-button type="info" size="small" v-if="scope.row.status === '已批准'" @click="handleRevoke(scope.row)"> 撤销 </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
<!-- 创建报废单对话框 --> <!-- 创建不良品单对话框 -->
<el-dialog append-to-body title="创建报废" :lock-scroll="false" v-model="scrapOrderOpen" width="60%"> <el-dialog append-to-body :close-on-click-modal="false" title="创建不良品" :lock-scroll="false" v-model="defectOrderOpen" width="50%">
<el-form ref="scrapOrderFormRef" :model="scrapOrderForm" :rules="scrapOrderRules" label-width="100px"> <el-form ref="defectOrderFormRef" :model="defectOrderForm" :rules="defectOrderRules" label-width="100px">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :lg="12"> <el-col :lg="12">
<el-form-item label="主体型号" prop="materialCode"> <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-form-item>
</el-col> </el-col>
<el-col :lg="12"> <el-col :lg="12">
<el-form-item label="主体品名" prop="materialName"> <el-form-item label="主体品名" prop="materialName">
<el-input v-model="scrapOrderForm.materialName" placeholder="主体品名" disabled /> <el-input v-model="defectOrderForm.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-form-item> </el-form-item>
</el-col> </el-col>
<el-col :lg="12"> <el-col :lg="12">
<el-form-item label="工单号" prop="workorder"> <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-form-item>
</el-col> </el-col>
<el-col :lg="12"> <el-col :lg="12">
<el-form-item label="不良品数量" prop="scrapQuantity"> <el-form-item label="不良品数量" prop="scrapQuantity">
<el-input v-model="scrapOrderForm.scrapQuantity" placeholder="请输入不良品数量" /> <el-input v-model="defectOrderForm.scrapQuantity" placeholder="请输入不良品数量" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :lg="24"> <el-col :lg="24">
<el-form-item label="不良原因" prop="scrapReason"> <el-form-item label="不良原因" prop="scrapReason">
<el-input v-model="scrapOrderForm.scrapReason" placeholder="请输入不良原因" type="textarea" :rows="3" /> <el-input v-model="defectOrderForm.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> </el-form-item>
</el-col> </el-col>
<el-col :lg="12"> <el-col :lg="12">
<el-form-item label="操作员" prop="operator"> <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-option v-for="item in userOptions" :key="item.userId" :label="item.nickName" :value="item.nickName" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :lg="12"> <el-col :lg="12">
<el-form-item label="质检员" prop="qualityInspector"> <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-option v-for="item in userOptions" :key="item.userId" :label="item.nickName" :value="item.nickName" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :lg="12"> <el-col :lg="12">
<el-form-item label="报废日期" prop="scrapDate"> <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-date-picker v-model="defectOrderForm.scrapDate" type="datetime" placeholder="选择日期时间" />
</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> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</el-form> </el-form>
<template #footer> <template #footer>
<el-button text @click="cancelScrapOrder">{{ $t('btn.cancel') }}</el-button> <el-button text @click="cancelDefectOrder">{{ $t('btn.cancel') }}</el-button>
<el-button type="primary" @click="submitScrapOrder">{{ $t('btn.submit') }}</el-button> <el-button type="primary" @click="submitDefectOrder">{{ $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>
</template> </template>
</el-dialog> </el-dialog>
@@ -193,6 +115,36 @@
<el-button type="primary" @click="submitRevoke">{{ $t('btn.submit') }}</el-button> <el-button type="primary" @click="submitRevoke">{{ $t('btn.submit') }}</el-button>
</template> </template>
</el-dialog> </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> </el-dialog>
</template> </template>
@@ -200,9 +152,9 @@
import { ref, reactive, toRefs, watch, getCurrentInstance } from 'vue' import { ref, reactive, toRefs, watch, getCurrentInstance } from 'vue'
import { import {
getQcScrapRecordsByWorkorder, getQcScrapRecordsByWorkorder,
createScrapOrderByWorkorder, createDefectOrderByWorkorder,
createTransferOrderByWorkorder, revokeScrapRecordById,
revokeScrapRecordById approveScrapRecord
} from '@/api/qualityManagement/IPQC/qcscraprecords.js' } from '@/api/qualityManagement/IPQC/qcscraprecords.js'
import { listUser } from '@/api/system/user.js' import { listUser } from '@/api/system/user.js'
@@ -230,38 +182,26 @@ const defectList = ref([])
const userOptions = ref([]) const userOptions = ref([])
// 弹窗状态 // 弹窗状态
const scrapOrderOpen = ref(false) const defectOrderOpen = ref(false)
const transferOrderOpen = ref(false)
const revokeConfirmOpen = ref(false) const revokeConfirmOpen = ref(false)
const approveOpen = ref(false)
// 选中的记录 // 选中的记录
const selectedRevokeId = ref(null) const selectedRevokeId = ref(null)
const selectedApproveId = ref(null)
// 表单引用 // 表单引用
const scrapOrderFormRef = ref() const defectOrderFormRef = ref()
const transferOrderFormRef = ref() const approveFormRef = ref()
// 表单数据 // 表单数据
const state = reactive({ const state = reactive({
scrapOrderForm: { defectOrderForm: {
materialCode: null,
materialName: null,
batchNo: null,
scrapQuantity: null,
scrapType: '报废',
scrapReason: null,
disposalMethod: null,
operator: null,
qualityInspector: null,
scrapDate: null,
remark: null
},
transferOrderForm: {
materialCode: null, materialCode: null,
materialName: null, materialName: null,
workorder: null, workorder: null,
scrapQuantity: null, scrapQuantity: null,
scrapType: '转用', scrapType: '不良品',
scrapReason: null, scrapReason: null,
disposalMethod: null, disposalMethod: null,
operator: null, operator: null,
@@ -269,16 +209,7 @@ const state = reactive({
scrapDate: null, scrapDate: null,
remark: null remark: null
}, },
scrapOrderRules: { defectOrderRules: {
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: {
materialCode: [{ required: true, message: '主体型号不能为空', trigger: 'blur' }], materialCode: [{ required: true, message: '主体型号不能为空', trigger: 'blur' }],
workorder: [{ required: true, message: '工单号不能为空', trigger: 'blur' }], workorder: [{ required: true, message: '工单号不能为空', trigger: 'blur' }],
scrapReason: [{ required: true, message: '不良品原因不能为空', trigger: 'blur' }], scrapReason: [{ required: true, message: '不良品原因不能为空', trigger: 'blur' }],
@@ -286,11 +217,20 @@ const state = reactive({
// disposalMethod: [{ required: true, message: '处置方式不能为空', trigger: 'blur' }], // disposalMethod: [{ required: true, message: '处置方式不能为空', trigger: 'blur' }],
operator: [{ required: true, message: '操作员不能为空', trigger: 'change' }], operator: [{ required: true, message: '操作员不能为空', trigger: 'change' }],
qualityInspector: [{ 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( watch(
@@ -345,37 +285,37 @@ function getUserList() {
} }
} }
// 打开创建报废单对话框 // 打开创建不良品单对话框
function handleCreateScrapOrder() { function handleCreateDefectOrder() {
resetScrapOrderForm() resetDefectOrderForm()
// 从工单信息带入数据 // 从工单信息带入数据
scrapOrderForm.value.workorder = props.workorderInfo.workorder defectOrderForm.value.workorder = props.workorderInfo.workorder
// 自动带入主体型号和主体品名 // 自动带入主体型号和主体品名
if (props.workorderInfo.productionCode) { if (props.workorderInfo.productionCode) {
scrapOrderForm.value.materialCode = props.workorderInfo.productionCode defectOrderForm.value.materialCode = props.workorderInfo.productionCode
} }
if (props.workorderInfo.productionName) { 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', ' ') defectOrderForm.value.scrapDate = new Date().toISOString().slice(0, 19).replace('T', ' ')
scrapOrderOpen.value = true defectOrderOpen.value = true
} }
// 关闭创建报废单对话框 // 关闭创建不良品单对话框
function cancelScrapOrder() { function cancelDefectOrder() {
scrapOrderOpen.value = false defectOrderOpen.value = false
resetScrapOrderForm() resetDefectOrderForm()
} }
// 重置报废单表单 // 重置不良品单表单
function resetScrapOrderForm() { function resetDefectOrderForm() {
state.scrapOrderForm = { state.defectOrderForm = {
materialCode: null, materialCode: null,
materialName: null, materialName: null,
batchNo: null, workorder: null,
scrapQuantity: null, scrapQuantity: null,
scrapType: '报废', scrapType: '不良品',
scrapReason: null, scrapReason: null,
disposalMethod: null, disposalMethod: null,
operator: null, operator: null,
@@ -383,90 +323,78 @@ function resetScrapOrderForm() {
scrapDate: null, scrapDate: null,
remark: null remark: null
} }
proxy.resetForm('scrapOrderFormRef') proxy.resetForm('defectOrderFormRef')
} }
// 提交报废 // 提交不良品
function submitScrapOrder() { function submitDefectOrder() {
proxy.$refs['scrapOrderFormRef'].validate((valid) => { proxy.$refs['defectOrderFormRef'].validate((valid) => {
if (valid) { if (valid) {
const formData = { const formData = {
...scrapOrderForm.value, ...defectOrderForm.value,
workorder: props.workorderInfo.workorder workorder: props.workorderInfo.workorder
} }
createScrapOrderByWorkorder(formData) // 使用创建不良品单的API
createDefectOrderByWorkorder(formData)
.then((res) => { .then((res) => {
if (res.code === 200) { if (res.code === 200) {
proxy.$modal.msgSuccess('创建报废单成功') proxy.$modal.msgSuccess('创建不良品单成功')
scrapOrderOpen.value = false defectOrderOpen.value = false
getDefectList() getDefectList()
emit('submit', { type: 'scrap', data: formData }) emit('submit', { type: 'defect', data: formData })
} }
}) })
.catch(() => { .catch(() => {
proxy.$modal.msgError('创建报废单失败') proxy.$modal.msgError('创建不良品单失败')
}) })
} }
}) })
} }
// 打开创建转用单对话框 // 打开审批不良品记录对话框
function handleCreateTransferOrder() { function handleApprove(row) {
resetTransferOrderForm() selectedApproveId.value = row.id
// 从工单信息带入数据 resetApproveForm()
transferOrderForm.value.workorder = props.workorderInfo.workorder approveOpen.value = true
// 自动带入主体型号和主体品名
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 cancelTransferOrder() { function cancelApprove() {
transferOrderOpen.value = false approveOpen.value = false
resetTransferOrderForm() resetApproveForm()
selectedApproveId.value = null
} }
// 重置转用单表单 // 重置审批表单
function resetTransferOrderForm() { function resetApproveForm() {
state.transferOrderForm = { state.approveForm = {
materialCode: null, isApproved: true,
materialName: null, approver: '',
workorder: null,
scrapQuantity: null,
scrapType: '转用',
scrapReason: null,
disposalMethod: null,
operator: null,
qualityInspector: null,
scrapDate: null,
remark: null remark: null
} }
proxy.resetForm('transferOrderFormRef') proxy.resetForm('approveFormRef')
} }
// 提交转用单 // 提交审批
function submitTransferOrder() { function submitApprove() {
proxy.$refs['transferOrderFormRef'].validate((valid) => { proxy.$refs['approveFormRef'].validate((valid) => {
if (valid) { if (valid) {
createTransferOrderByWorkorder(transferOrderForm.value) // 使用审批API
approveScrapRecord(selectedApproveId.value, approveForm.value)
.then((res) => { .then((res) => {
if (res.code === 200) { if (res.code === 200) {
proxy.$modal.msgSuccess('创建转用单成功') proxy.$modal.msgSuccess('审批成功')
transferOrderOpen.value = false approveOpen.value = false
getDefectList() getDefectList()
emit('submit', { type: 'transfer', data: transferOrderForm.value }) emit('submit', { type: 'approve', data: { id: selectedApproveId.value, ...approveForm.value } })
} }
}) })
.catch(() => { .catch(() => {
proxy.$modal.msgError('创建转用单失败') proxy.$modal.msgError('审批失败')
})
.finally(() => {
selectedApproveId.value = null
}) })
} }
}) })