| | |
| | | style="width: 200px;" |
| | | @change="handleQuery" /> |
| | | </el-form-item> |
| | | <el-form-item label="审核状态:"> |
| | | <el-select v-model="searchForm.auditStatus" placeholder="请选择" style="width: 200px;" @change="handleQuery"> |
| | | <el-option v-for="item in auditStatusOptions" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" |
| | | @click="handleQuery">搜索</el-button> |
| | |
| | | </template> |
| | | </PIMTable> |
| | | </div> |
| | | <el-dialog |
| | | v-model="auditDialogVisible" |
| | | title="审核意见" |
| | | width="1200px" |
| | | :close-on-click-modal="false" |
| | | > |
| | | <!-- 审核表单 --> |
| | | <div style=" padding: 15px; border-radius: 4px;"> |
| | | <el-form ref="auditFormRef" :model="form" :rules="auditFormRules" label-width="100px"> |
| | | <el-form-item label="审核结果" prop="auditResult"> |
| | | <el-radio-group v-model="form.auditResult" @change="handleAuditResultChange" size="large"> |
| | | <el-radio label=1 >通过</el-radio> |
| | | <el-radio label=2 >不通过</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="备注意见" prop="remarks"> |
| | | <el-input |
| | | v-model="form.remarks" |
| | | type="textarea" |
| | | :rows="4" |
| | | placeholder="请输入备注或意见(不通过时为必填)" |
| | | maxlength="500" |
| | | show-word-limit |
| | | /> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | |
| | | <template #footer> |
| | | <span class="dialog-footer"> |
| | | <el-button type="primary" @click="submitAudit">提交审核</el-button> |
| | | <el-button :disabled="auditLoading" @click="auditDialogVisible = false">取消</el-button> |
| | | </span> |
| | | </template> |
| | | </el-dialog> |
| | | <form-dia ref="formDia" |
| | | @close="handleQuery"></form-dia> |
| | | <input-modal v-if="isShowInput" |
| | |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { onMounted, ref } from "vue"; |
| | | import { onMounted, ref, reactive, toRefs, nextTick, getCurrentInstance } from "vue"; |
| | | import FormDia from "@/views/productionManagement/productionReporting/components/formDia.vue"; |
| | | import { ElMessageBox } from "element-plus"; |
| | | import { ElMessageBox, ElMessage } from "element-plus"; |
| | | import { |
| | | productionReportUpdate, |
| | | workListPageById, |
| | | productionReportDelete, |
| | | } from "@/api/productionManagement/productionReporting.js"; |
| | | import { productionProductMainListPage } from "@/api/productionManagement/productionProductMain.js"; |
| | | import { productionProductMainListPage, productAudit } from "@/api/productionManagement/productionProductMain.js"; |
| | | import { userListNoPageByTenantId } from "@/api/system/user.js"; |
| | | import InputModal from "@/views/productionManagement/productionReporting/Input.vue"; |
| | | |
| | |
| | | nickName: "", |
| | | workOrderNo: "", |
| | | workOrderStatus: "", |
| | | auditStatus: "", // 审核状态 |
| | | }, |
| | | }); |
| | | const { searchForm } = toRefs(data); |
| | | const expandedRowKeys = ref([]); |
| | | const auditDialogVisible = ref(false); |
| | | const auditRowData = ref(null); |
| | | const auditTableData = ref([]); |
| | | const auditLoading = ref(false); |
| | | const expandData = ref([]); |
| | | const userList = ref([]); |
| | | const auditStatusOptions = ref([ |
| | | { label: "未审核", value: 0 }, |
| | | { label: "通过", value: 1 }, |
| | | { label: "不通过", value: 2 }, |
| | | ]); |
| | | const tableColumn = ref([ |
| | | { |
| | | label: "报工单号", |
| | |
| | | label: "报工人员", |
| | | prop: "nickName", |
| | | width: 120, |
| | | }, |
| | | { |
| | | label: "工序", |
| | | prop: "process", |
| | | width: 120, |
| | | }, |
| | | { |
| | | label: "审核状态", |
| | | prop: "auditStatus", |
| | | width: 120, |
| | | dataType: "tag", |
| | | formatData: val => { |
| | | const statusMap = { 0: "未审核", 1: "通过", 2: "不通过" }; |
| | | return statusMap[val] ?? "未知"; |
| | | }, |
| | | formatType: val => { |
| | | const typeMap = { 0: "info", 1: "success", 2: "danger" }; |
| | | return typeMap[val] ?? ""; |
| | | }, |
| | | }, |
| | | { |
| | | label: "工单编号", |
| | |
| | | prop: "quantity", |
| | | width: 120, |
| | | }, |
| | | // { |
| | | // label: "报废数量", |
| | | // prop: "scrapQuantity", |
| | | // width: 120, |
| | | // }, |
| | | { |
| | | label: "报废数量", |
| | | prop: "scrapQty", |
| | | width: 120, |
| | | }, |
| | | { |
| | | label: "单位", |
| | | prop: "unit", |
| | | width: 120, |
| | | }, |
| | | |
| | | { |
| | | label: "审核人", |
| | | prop: "auditUserName", |
| | | width: 120, |
| | | }, |
| | | { |
| | | label: "创建时间", |
| | | prop: "createTime", |
| | |
| | | label: "操作", |
| | | align: "center", |
| | | fixed: "right", |
| | | width: 200, |
| | | operation: [ |
| | | { |
| | | name: "查看投入", |
| | |
| | | deleteReport(row); |
| | | }, |
| | | }, |
| | | { |
| | | name:"审核", |
| | | color: "#E6A23C", |
| | | clickFun: row => { |
| | | handleAudit(row); |
| | | }, |
| | | disabled: row => Number(row?.auditStatus) !== 0, // 已审核时禁用审核按钮 |
| | | }, |
| | | ], |
| | | }, |
| | | ]); |
| | |
| | | }); |
| | | const formDia = ref(); |
| | | const { proxy } = getCurrentInstance(); |
| | | const auditFormRef = ref(null); |
| | | const auditFormRules = ref({ |
| | | auditResult: [{ required: true, message: "请选择审核结果", trigger: "change" }], |
| | | remarks: [ |
| | | { |
| | | validator: (rule, value, callback) => { |
| | | if (form.value.auditResult === "2" && (!value || value.trim() === "")) { |
| | | callback(new Error("不通过时必须填写备注或意见")); |
| | | } else { |
| | | callback(); |
| | | } |
| | | }, |
| | | trigger: ["change", "blur"], |
| | | }, |
| | | ], |
| | | }); |
| | | const form = ref({ |
| | | auditResult: 1, |
| | | remarks: "", |
| | | }); |
| | | |
| | | // 查询列表 |
| | | /** 搜索按钮操作 */ |
| | |
| | | isShowingId.value = row.id; |
| | | }; |
| | | |
| | | // 审核 |
| | | const handleAudit = (row) => { |
| | | if (Number(row?.auditStatus) === 1) { |
| | | ElMessage.warning("该工单已审核"); |
| | | return; |
| | | } |
| | | // 重置表单,默认选择通过 |
| | | form.value = { |
| | | auditResult: "1", |
| | | remarks: "", |
| | | }; |
| | | auditRowData.value = row; |
| | | const workOrderNo = row?.workOrderNo; |
| | | const related = workOrderNo |
| | | ? tableData.value.filter(r => r?.workOrderNo === workOrderNo) |
| | | : []; |
| | | auditTableData.value = related.length > 0 ? related : [row]; |
| | | auditDialogVisible.value = true; |
| | | nextTick(() => { |
| | | auditFormRef.value?.clearValidate(); |
| | | }); |
| | | }; |
| | | |
| | | // 审核结果变更 |
| | | const handleAuditResultChange = () => { |
| | | if (form.value.auditResult === "1") { |
| | | // 切换为通过时清除备注校验 |
| | | auditFormRef.value?.clearValidate("remarks"); |
| | | } else { |
| | | // 切换为不通过时重新触发备注校验 |
| | | auditFormRef.value?.validateField("remarks"); |
| | | } |
| | | }; |
| | | |
| | | // 提交审核 |
| | | const submitAudit = (auditResult) => { |
| | | auditFormRef.value?.validate().then(() => { |
| | | auditLoading.value = true; |
| | | const auditData = { |
| | | id: auditRowData.value.id, |
| | | auditStatus: Number(form.value.auditResult), |
| | | auditOpinion: form.value.remarks, |
| | | }; |
| | | // 调用报工审批API |
| | | productAudit(auditData) |
| | | .then(res => { |
| | | if (res.code === 200) { |
| | | if(auditResult === 1){ |
| | | proxy.$modal.msgSuccess("审核通过"); |
| | | }else{ |
| | | proxy.$modal.msgError("审核不通过"); |
| | | } |
| | | auditDialogVisible.value = false; |
| | | getList(); |
| | | } else { |
| | | proxy.$modal.msgError(res.msg || "审核失败"); |
| | | } |
| | | }) |
| | | .catch(err => { |
| | | proxy.$modal.msgError("审核失败"); |
| | | }) |
| | | .finally(() => { |
| | | auditLoading.value = false; |
| | | }); |
| | | }).catch(() => { |
| | | // 验证失败 |
| | | }); |
| | | }; |
| | | |
| | | // 导出 |
| | | const handleOut = () => { |
| | | ElMessageBox.confirm("选中的内容将被导出,是否确认导出?", "导出", { |