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撤销不良品记录
|
* 根据不良品记录ID撤销不良品记录
|
||||||
* @param {不良品记录ID} id
|
* @param {不良品记录ID} id
|
||||||
|
|||||||
@@ -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,103 +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,
|
|
||||||
materialName: null,
|
|
||||||
batchNo: null,
|
|
||||||
scrapQuantity: null,
|
|
||||||
scrapType: '报废',
|
|
||||||
scrapReason: null,
|
|
||||||
disposalMethod: null,
|
|
||||||
operator: null,
|
|
||||||
qualityInspector: null,
|
|
||||||
scrapDate: null,
|
|
||||||
remark: null
|
|
||||||
}
|
|
||||||
proxy.resetForm('scrapOrderFormRef')
|
|
||||||
}
|
|
||||||
|
|
||||||
// 提交报废单
|
|
||||||
function submitScrapOrder() {
|
|
||||||
proxy.$refs['scrapOrderFormRef'].validate((valid) => {
|
|
||||||
if (valid) {
|
|
||||||
const formData = {
|
|
||||||
...scrapOrderForm.value,
|
|
||||||
workorder: props.workorderInfo.workorder
|
|
||||||
}
|
|
||||||
|
|
||||||
createScrapOrderByWorkorder(formData)
|
|
||||||
.then((res) => {
|
|
||||||
if (res.code === 200) {
|
|
||||||
proxy.$modal.msgSuccess('创建报废单成功')
|
|
||||||
scrapOrderOpen.value = false
|
|
||||||
getDefectList()
|
|
||||||
emit('submit', { type: 'scrap', data: formData })
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.catch(() => {
|
|
||||||
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 cancelTransferOrder() {
|
|
||||||
transferOrderOpen.value = false
|
|
||||||
resetTransferOrderForm()
|
|
||||||
}
|
|
||||||
|
|
||||||
// 重置转用单表单
|
|
||||||
function resetTransferOrderForm() {
|
|
||||||
state.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,
|
||||||
@@ -449,24 +323,78 @@ function resetTransferOrderForm() {
|
|||||||
scrapDate: null,
|
scrapDate: null,
|
||||||
remark: null
|
remark: null
|
||||||
}
|
}
|
||||||
proxy.resetForm('transferOrderFormRef')
|
proxy.resetForm('defectOrderFormRef')
|
||||||
}
|
}
|
||||||
|
|
||||||
// 提交转用单
|
// 提交不良品单
|
||||||
function submitTransferOrder() {
|
function submitDefectOrder() {
|
||||||
proxy.$refs['transferOrderFormRef'].validate((valid) => {
|
proxy.$refs['defectOrderFormRef'].validate((valid) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
createTransferOrderByWorkorder(transferOrderForm.value)
|
const formData = {
|
||||||
|
...defectOrderForm.value,
|
||||||
|
workorder: props.workorderInfo.workorder
|
||||||
|
}
|
||||||
|
|
||||||
|
// 使用创建不良品单的API
|
||||||
|
createDefectOrderByWorkorder(formData)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
if (res.code === 200) {
|
if (res.code === 200) {
|
||||||
proxy.$modal.msgSuccess('创建转用单成功')
|
proxy.$modal.msgSuccess('创建不良品单成功')
|
||||||
transferOrderOpen.value = false
|
defectOrderOpen.value = false
|
||||||
getDefectList()
|
getDefectList()
|
||||||
emit('submit', { type: 'transfer', data: transferOrderForm.value })
|
emit('submit', { type: 'defect', data: formData })
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
proxy.$modal.msgError('创建转用单失败')
|
proxy.$modal.msgError('创建不良品单失败')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 打开审批不良品记录对话框
|
||||||
|
function handleApprove(row) {
|
||||||
|
selectedApproveId.value = row.id
|
||||||
|
resetApproveForm()
|
||||||
|
approveOpen.value = true
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭审批不良品记录对话框
|
||||||
|
function cancelApprove() {
|
||||||
|
approveOpen.value = false
|
||||||
|
resetApproveForm()
|
||||||
|
selectedApproveId.value = null
|
||||||
|
}
|
||||||
|
|
||||||
|
// 重置审批表单
|
||||||
|
function resetApproveForm() {
|
||||||
|
state.approveForm = {
|
||||||
|
isApproved: true,
|
||||||
|
approver: '',
|
||||||
|
remark: null
|
||||||
|
}
|
||||||
|
proxy.resetForm('approveFormRef')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 提交审批
|
||||||
|
function submitApprove() {
|
||||||
|
proxy.$refs['approveFormRef'].validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
// 使用审批API
|
||||||
|
approveScrapRecord(selectedApproveId.value, approveForm.value)
|
||||||
|
.then((res) => {
|
||||||
|
if (res.code === 200) {
|
||||||
|
proxy.$modal.msgSuccess('审批成功')
|
||||||
|
approveOpen.value = false
|
||||||
|
getDefectList()
|
||||||
|
emit('submit', { type: 'approve', data: { id: selectedApproveId.value, ...approveForm.value } })
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
proxy.$modal.msgError('审批失败')
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
selectedApproveId.value = null
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user