<template>
|
<div class="app-container">
|
<!-- 查询区域 -->
|
<div class="search-form">
|
<el-form :model="searchForm" inline size="small">
|
<el-form-item label="报告编号">
|
<el-input v-model="searchForm.reportNo" placeholder="请输入报告编号" clearable></el-input>
|
</el-form-item>
|
<el-form-item label="审核状态">
|
<el-select v-model="searchForm.status" placeholder="请选择审核状态" clearable>
|
<el-option label="待审核" value="0"></el-option>
|
<el-option label="已通过" value="1"></el-option>
|
<el-option label="已驳回" value="2"></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item>
|
<el-button type="primary" @click="searchList">查询</el-button>
|
<el-button @click="resetSearch">重置</el-button>
|
</el-form-item>
|
</el-form>
|
</div>
|
|
<!-- 数据表格 -->
|
<el-table v-loading="tableLoading" :data="tableData" border>
|
<el-table-column label="报告编号" prop="reportNo" show-overflow-tooltip></el-table-column>
|
<el-table-column label="产品名称" prop="productName" show-overflow-tooltip></el-table-column>
|
<el-table-column label="规格型号" prop="specModel" show-overflow-tooltip></el-table-column>
|
<el-table-column label="不合格描述" prop="unqualifiedDesc" show-overflow-tooltip></el-table-column>
|
<el-table-column label="检验人员" prop="inspector" show-overflow-tooltip></el-table-column>
|
<el-table-column label="登记时间" prop="registerDate" show-overflow-tooltip></el-table-column>
|
<el-table-column label="审核状态" prop="status">
|
<template slot-scope="scope">
|
<el-tag :type="getStatusType(scope.row.status)">
|
{{ getStatusText(scope.row.status) }}
|
</el-tag>
|
</template>
|
</el-table-column>
|
<el-table-column label="审核意见" prop="auditOpinion" show-overflow-tooltip></el-table-column>
|
<el-table-column label="审核人员" prop="auditor" show-overflow-tooltip></el-table-column>
|
<el-table-column label="审核时间" prop="auditDate" show-overflow-tooltip></el-table-column>
|
<el-table-column label="操作" width="200">
|
<template slot-scope="scope">
|
<el-button type="text" @click="viewDetail(scope.row)">查看</el-button>
|
<el-button type="text" v-if="scope.row.status === '0'" @click="openAuditDia(scope.row)">审核</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
|
<!-- 分页 -->
|
<el-pagination
|
:current-page="page.current"
|
:page-size="page.size"
|
:total="page.total"
|
@size-change="handleSizeChange"
|
@current-change="handleCurrentChange"
|
layout="total, sizes, prev, pager, next, jumper">
|
</el-pagination>
|
|
<!-- 审核弹窗 -->
|
<el-dialog title="不良品审核" :visible.sync="auditVisible" width="500px">
|
<el-form :model="auditForm" label-width="100px" size="small">
|
<el-form-item label="审核状态">
|
<el-radio-group v-model="auditForm.status">
|
<el-radio label="1">通过</el-radio>
|
<el-radio label="2">驳回</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
<el-form-item label="审核意见">
|
<el-textarea v-model="auditForm.opinion" :rows="3" placeholder="请输入审核意见"></el-textarea>
|
</el-form-item>
|
</el-form>
|
<div slot="footer" class="dialog-footer">
|
<el-button @click="auditVisible = false">取消</el-button>
|
<el-button type="primary" @click="submitAudit" :loading="submitLoading">确定审核</el-button>
|
</div>
|
</el-dialog>
|
|
<!-- 详情弹窗 -->
|
<el-dialog title="不良品审核详情" :visible.sync="detailVisible" width="600px">
|
<el-form :model="detailData" label-width="120px" size="small" disabled>
|
<el-form-item label="报告编号">
|
<span>{{ detailData.reportNo }}</span>
|
</el-form-item>
|
<el-form-item label="产品名称">
|
<span>{{ detailData.productName }}</span>
|
</el-form-item>
|
<el-form-item label="规格型号">
|
<span>{{ detailData.specModel }}</span>
|
</el-form-item>
|
<el-form-item label="生产厂家">
|
<span>{{ detailData.manufacturer }}</span>
|
</el-form-item>
|
<el-form-item label="原材料信息">
|
<span>{{ detailData.materialInfo }}</span>
|
</el-form-item>
|
<el-form-item label="不合格描述">
|
<span>{{ detailData.unqualifiedDesc }}</span>
|
</el-form-item>
|
<el-form-item label="检验人员">
|
<span>{{ detailData.inspector }}</span>
|
</el-form-item>
|
<el-form-item label="登记时间">
|
<span>{{ detailData.registerDate }}</span>
|
</el-form-item>
|
<el-form-item label="审核状态">
|
<el-tag :type="getStatusType(detailData.status)">
|
{{ getStatusText(detailData.status) }}
|
</el-tag>
|
</el-form-item>
|
<el-form-item label="审核意见">
|
<span>{{ detailData.auditOpinion || "-" }}</span>
|
</el-form-item>
|
<el-form-item label="审核人员">
|
<span>{{ detailData.auditor || "-" }}</span>
|
</el-form-item>
|
<el-form-item label="审核时间">
|
<span>{{ detailData.auditDate || "-" }}</span>
|
</el-form-item>
|
</el-form>
|
<div slot="footer" class="dialog-footer">
|
<el-button @click="detailVisible = false">关闭</el-button>
|
</div>
|
</el-dialog>
|
</div>
|
</template>
|
|
<script>
|
import {
|
pageDefectiveProductAudit,
|
auditDefectiveProduct,
|
getDefectiveProduct,
|
} from "@/api/quality/defectiveProduct";
|
|
export default {
|
name: "DefectiveProductAudit",
|
data() {
|
return {
|
searchForm: {
|
reportNo: "",
|
status: "",
|
},
|
tableData: [],
|
tableLoading: false,
|
page: {
|
current: 1,
|
size: 20,
|
total: 0,
|
},
|
auditVisible: false,
|
auditForm: {
|
id: null,
|
status: "1",
|
opinion: "",
|
},
|
submitLoading: false,
|
detailVisible: false,
|
detailData: {},
|
};
|
},
|
mounted() {
|
this.searchList();
|
},
|
methods: {
|
searchList() {
|
this.tableLoading = true;
|
pageDefectiveProductAudit({
|
...this.searchForm,
|
page: this.page.current,
|
size: this.page.size,
|
}).then((res) => {
|
this.tableData = res.data.records;
|
this.page.total = res.data.total;
|
this.tableLoading = false;
|
}).catch((err) => {
|
this.tableLoading = false;
|
console.error(err);
|
});
|
},
|
resetSearch() {
|
this.searchForm = {
|
reportNo: "",
|
status: "",
|
};
|
this.searchList();
|
},
|
handleSizeChange(val) {
|
this.page.size = val;
|
this.searchList();
|
},
|
handleCurrentChange(val) {
|
this.page.current = val;
|
this.searchList();
|
},
|
getStatusType(status) {
|
switch (status) {
|
case "0":
|
return "warning";
|
case "1":
|
return "success";
|
case "2":
|
return "danger";
|
default:
|
return "info";
|
}
|
},
|
getStatusText(status) {
|
switch (status) {
|
case "0":
|
return "待审核";
|
case "1":
|
return "已通过";
|
case "2":
|
return "已驳回";
|
default:
|
return "未知";
|
}
|
},
|
openAuditDia(row) {
|
this.auditForm = {
|
id: row.id,
|
status: "1",
|
opinion: "",
|
};
|
this.auditVisible = true;
|
},
|
submitAudit() {
|
this.submitLoading = true;
|
auditDefectiveProduct(this.auditForm).then((res) => {
|
if (res.code === 200) {
|
this.$message.success("审核成功");
|
this.auditVisible = false;
|
this.searchList();
|
} else {
|
this.$message.error(res.msg || "审核失败");
|
}
|
this.submitLoading = false;
|
}).catch((err) => {
|
this.submitLoading = false;
|
console.error(err);
|
});
|
},
|
viewDetail(row) {
|
getDefectiveProduct({ id: row.id }).then((res) => {
|
this.detailData = res.data;
|
this.detailVisible = true;
|
}).catch((err) => {
|
console.error(err);
|
});
|
},
|
},
|
};
|
</script>
|
|
<style scoped>
|
.search-form {
|
margin-bottom: 15px;
|
}
|
|
.dialog-footer {
|
text-align: right;
|
}
|
</style>
|