| | |
| | | <div> |
| | | <el-dialog |
| | | v-model="dialogFormVisible" |
| | | :title="operationType === 'add' ? '新增原材料检验' : '编辑原材料检验'" |
| | | :title="operationType === 'add' ? '新增不合格处理' : '处理不合格'" |
| | | width="70%" |
| | | @close="closeDia" |
| | | > |
| | | <el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef"> |
| | | <el-row :gutter="30"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="状态:" prop="inspectState"> |
| | | <el-select v-model="form.inspectState"> |
| | | <el-option label="待处理" :value="0" /> |
| | | <el-option label="已处理" :value="1" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="类别:" prop="inspectType"> |
| | | <el-select v-model="form.inspectType" disabled> |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="处理结果:" prop="dealResult"> |
| | | <el-input v-model="form.dealResult" placeholder="请输入" clearable/> |
| | | <el-select v-model="form.dealResult" placeholder="请选择" clearable> |
| | | <el-option :label="item.label" :value="item.value" v-for="item in autoDealResultOptions" :key="item.value" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="30"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="不合格类型:" prop="dealType"> |
| | | <el-input :model-value="dealTypeLabel(form.dealType)" disabled /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="修理工时:" prop="repairWorkHour"> |
| | | <el-input-number |
| | | v-model="form.repairWorkHour" |
| | | :min="0" |
| | | :precision="2" |
| | | style="width: 100%" |
| | | :disabled="Number(form.dealType) !== 0" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="30"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="处理人:" prop="dealName"> |
| | | <el-input v-model="form.dealName" placeholder="请输入" clearable/> |
| | | <el-select v-model="form.dealName" placeholder="请选择" clearable style="width: 100%"> |
| | | <el-option v-for="item in userList" :key="item.nickName" :label="item.nickName" :value="item.nickName"/> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | |
| | | </template> |
| | | |
| | | <script setup> |
| | | import {ref} from "vue"; |
| | | import { ref, reactive, toRefs, computed, getCurrentInstance } from "vue"; |
| | | import {productTreeList} from "@/api/basicData/product.js"; |
| | | import { |
| | | getQualityUnqualifiedInfo, |
| | | qualityUnqualifiedAdd, |
| | | qualityUnqualifiedUpdate |
| | | qualityUnqualifiedDeal |
| | | } from "@/api/qualityManagement/nonconformingManagement.js"; |
| | | import {userListNoPage} from "@/api/system/user.js"; |
| | | const { proxy } = getCurrentInstance() |
| | | const emit = defineEmits(['close']) |
| | | |
| | |
| | | quantity: "", |
| | | checkCompany: "", |
| | | checkResult: "", |
| | | inspectState: '', |
| | | inspectType: '', |
| | | defectivePhenomena: '', |
| | | dealResult: '', |
| | | dealType: null, |
| | | repairWorkHour: 0, |
| | | regenerateNewOrder: 0, |
| | | dealName: '', |
| | | dealTime: '', |
| | | method: undefined |
| | | }, |
| | | rules: { |
| | | checkTime: [{ required: false, message: "请输入", trigger: "blur" },], |
| | |
| | | checkResult: [{ required: false, message: "请输入", trigger: "blur" }], |
| | | defectivePhenomena: [{ required: true, message: "请输入", trigger: "blur" }], |
| | | dealResult: [{ required: true, message: "请输入", trigger: "blur" }], |
| | | dealName: [{ required: true, message: "请输入", trigger: "blur" }], |
| | | repairWorkHour: [{ required: false, message: "请输入", trigger: "blur" }], |
| | | dealName: [{ required: true, message: "请选择处理人", trigger: "change" }], |
| | | dealTime: [{ required: true, message: "请输入", trigger: "change" }], |
| | | }, |
| | | }); |
| | | const { form, rules } = toRefs(data); |
| | | const productOptions = ref([]); |
| | | const userList = ref([]); // 处理人下拉列表 |
| | | |
| | | const autoDealResultOptions = computed(() => { |
| | | if (Number(form.value.dealType) === 2) { |
| | | return [{ label: "报废", value: "报废" }]; |
| | | } |
| | | if (Number(form.value.dealType) === 0 || Number(form.value.dealType) === 1) { |
| | | return [{ label: "报工", value: "报工" }]; |
| | | } |
| | | return []; |
| | | }) |
| | | |
| | | const dealTypeLabel = (val) => { |
| | | const type = Number(val); |
| | | if (type === 0) { |
| | | return "轻微返工"; |
| | | } |
| | | if (type === 1) { |
| | | return "严重返工"; |
| | | } |
| | | if (type === 2) { |
| | | return "报废"; |
| | | } |
| | | return "-"; |
| | | }; |
| | | |
| | | |
| | | // 打开弹框 |
| | | const openDialog = (type, row) => { |
| | | const openDialog = async (type, row) => { |
| | | operationType.value = type; |
| | | // 处理人下拉列表 |
| | | try { |
| | | const userRes = await userListNoPage(); |
| | | userList.value = userRes.data || []; |
| | | } catch (e) { |
| | | console.error("加载用户列表失败", e); |
| | | userList.value = []; |
| | | } |
| | | dialogFormVisible.value = true; |
| | | form.value = {} |
| | | form.value = { |
| | | checkTime: "", |
| | | process: "", |
| | | checkName: "", |
| | | productName: "", |
| | | productId: "", |
| | | model: "", |
| | | unit: "", |
| | | quantity: "", |
| | | checkCompany: "", |
| | | checkResult: "", |
| | | inspectType: '', |
| | | defectivePhenomena: '', |
| | | dealResult: '', |
| | | dealType: null, |
| | | repairWorkHour: 0, |
| | | regenerateNewOrder: 0, |
| | | dealName: '', |
| | | dealTime: '', |
| | | method: undefined |
| | | }; |
| | | getProductOptions(); |
| | | if (operationType.value === 'edit') { |
| | | getQualityUnqualifiedInfo(row.id).then(res => { |
| | | form.value = {...res.data} |
| | | const { inspectState, ...rest } = (res.data || {}) |
| | | const dealType = rest.dealType === '' || rest.dealType === undefined || rest.dealType === null |
| | | ? null |
| | | : Number(rest.dealType); |
| | | // 用后端返回值回填,避免把不合格类型展示成空 |
| | | form.value = { ...form.value, ...rest, dealType } |
| | | if (!form.value.dealResult) { |
| | | form.value.dealResult = dealType === 2 ? "报废" : "报工"; |
| | | } |
| | | }) |
| | | } |
| | | } |
| | |
| | | const submitForm = () => { |
| | | proxy.$refs.formRef.validate(valid => { |
| | | if (valid) { |
| | | if (operationType.value === "add") { |
| | | qualityUnqualifiedAdd(form.value).then(res => { |
| | | proxy.$modal.msgSuccess("提交成功"); |
| | | closeDia(); |
| | | }) |
| | | // 状态字段不在表单填写,也不传给后端;处理统一走 /deal 接口 |
| | | const { inspectState, ...payload } = (form.value || {}) |
| | | if (Number(payload.dealType) === 2) { |
| | | payload.dealResult = "报废"; |
| | | } else { |
| | | qualityUnqualifiedUpdate(form.value).then(res => { |
| | | proxy.$modal.msgSuccess("提交成功"); |
| | | closeDia(); |
| | | }) |
| | | payload.dealResult = "报工"; |
| | | } |
| | | if (payload.dealType === 0 && (!payload.repairWorkHour || payload.repairWorkHour <= 0)) { |
| | | proxy.$modal.msgError("轻微返工必须填写大于0的修理工时"); |
| | | return; |
| | | } |
| | | qualityUnqualifiedDeal(payload).then(() => { |
| | | proxy.$modal.msgSuccess("提交成功"); |
| | | closeDia(); |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |
| | | </style> |