<template>
|
<div class="capacity-scope">
|
<div class="search">
|
<div>
|
<el-form :model="entity" ref="entity" size="small" :inline="true">
|
<el-form-item label="IFS域" prop="contract">
|
<el-select @keyup.enter.native="refreshTable" v-model="entity.contract" clearable placeholder="请选择" size="small">
|
<el-option label="ZTNS" value="ZTNS"/>
|
<el-option label="KJNS" value="KJNS"/>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="批号" prop="updateBatchNo">
|
<el-input v-model="entity.updateBatchNo" clearable placeholder="请输入" size="small"
|
@keyup.enter.native="refreshTable()">
|
</el-input>
|
</el-form-item>
|
<el-form-item label="订单编号" prop="no">
|
<el-input size="small" placeholder="请输入" clearable v-model="entity.no"
|
@keyup.enter.native="refreshTable()"></el-input>
|
</el-form-item>
|
<el-form-item label="规格型号" prop="specsModels">
|
<el-input size="small" placeholder="请输入" clearable v-model="entity.specsModels"
|
@keyup.enter.native="refreshTable()"></el-input>
|
</el-form-item>
|
<el-form-item label="样品名称" prop="sample">
|
<el-input size="small" placeholder="请输入" clearable v-model="entity.sample"
|
@keyup.enter.native="refreshTable()"></el-input>
|
</el-form-item>
|
<el-form-item label="物料属性" prop="materialProp">
|
<el-select clearable size="small" v-model="entity.materialProp" style="width: 100%" @change="refreshTable()">
|
<el-option v-for="dict in dict.type.material_prop_type" :key="dict.value" :label="dict.label"
|
:value="dict.value">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="OA审核状态" prop="operation">
|
<el-select clearable size="small" v-model="entity.operation" style="width: 100%" @change="refreshTable()">
|
<el-option v-for="dict in dict.type.oa_workflow_state" :key="dict.value" :label="dict.label"
|
:value="dict.value">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="反馈日期" prop="feedbackDateTime">
|
<el-date-picker
|
type="daterange"
|
size="small"
|
start-placeholder="开始日期"
|
end-placeholder="结束日期"
|
clearable
|
value-format="yyyy-MM-dd"
|
v-model="entity.feedbackDateTime"
|
@keyup.enter.native="refreshTable()">
|
</el-date-picker>
|
</el-form-item>
|
<el-form-item label="供应商名称" prop="supplierName">
|
<el-input size="small" placeholder="请输入" clearable v-model="entity.supplierName"
|
@keyup.enter.native="refreshTable()"></el-input>
|
</el-form-item>
|
<el-form-item>
|
<el-button type="primary" size="mini" @click="refreshTable">查询</el-button>
|
<el-button size="mini" @click="refresh">重置</el-button>
|
<el-button :loading="exportLoading" type="success" size="mini" @click="exportUnqualifiedHandler">导出</el-button>
|
</el-form-item>
|
</el-form>
|
</div>
|
</div>
|
<div>
|
<lims-table :tableData="tableData" :column="column"
|
:height="'calc(100vh - 250px)'" @pagination="pagination"
|
:page="page" :tableLoading="tableLoading"></lims-table>
|
</div>
|
<el-dialog
|
title="提交"
|
:show-close="false"
|
:close-on-press-escape="false"
|
:close-on-click-modal="false"
|
:visible.sync="dialogVisible"
|
width="30%">
|
<span>是否确认提交OA?</span>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="dialogVisible = false">取 消</el-button>
|
<el-button type="primary" @click="submitOA" :loading="submitOALoading">确 定</el-button>
|
</span>
|
</el-dialog>
|
<el-dialog
|
title="删除"
|
:show-close="false"
|
:close-on-press-escape="false"
|
:close-on-click-modal="false"
|
:visible.sync="deleteVisible"
|
width="30%">
|
<span>是否确认<span style="color: #FF4902">删除</span>OA?</span>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="deleteVisible = false">取 消</el-button>
|
<el-button type="primary" @click="cancelOA" :loading="cancelOALoading">确 定</el-button>
|
</span>
|
</el-dialog>
|
<UnPassDialog ref="unPassDialog" v-if="unPassDialog"
|
:orderId="orderId"
|
@resetForm="resetForm1"
|
:unPassDialog="unPassDialog"></UnPassDialog>
|
<OAProcess ref="OAProcess"
|
:OAProcess="OAProcess"
|
@closeOAProcess="closeOAProcess"
|
v-if="OAProcess"></OAProcess>
|
</div>
|
</template>
|
|
<script>
|
import UnPassDialog from "./components/unPassDialog.vue";
|
import OAProcess from "./components/OAProcess.vue";
|
import limsTable from "@/components/Table/lims-table.vue";
|
import {deleteUnqualifiedHandler, page, pushOA,exportUnqualifiedHandler} from "@/api/business/unqualifiedHandler";
|
import {transformExcel} from '@/utils/file'
|
export default {
|
components: {
|
limsTable,
|
OAProcess,
|
UnPassDialog,
|
},
|
dicts: ['material_prop_type','oa_workflow_state'],
|
data() {
|
return {
|
handlerId: null,
|
contract:null,
|
entity: {
|
contract: null,
|
sample: null,
|
specsModels: null,
|
supplierName: null,
|
feedbackDateTime:[],
|
materialProp: null,
|
operation:null
|
},
|
tableData: [],
|
tableLoading: false,
|
column: [
|
{
|
label: 'IFS域',
|
prop: 'contract',
|
width: '80px',
|
dataType: 'tag',
|
formatData: (params) => {
|
return params
|
},
|
formatType: (params) => {
|
if (params === 'ZTNS') {
|
return ''
|
} else if (params === 'KJNS') {
|
return 'success'
|
}else {
|
return null
|
}
|
}
|
|
},
|
{ label: '编号', prop: 'no', width: "160px", },
|
{
|
label: "OA审核状态",
|
prop: "operation",
|
width: "100px",
|
dataType: "tag",
|
formatData: (params) => {
|
return params
|
},
|
formatType: (params) => {
|
if(params){
|
this.dict.type.oa_workflow_state.forEach(item => {
|
if(item.value === params){
|
params = item.raw.listClass
|
}
|
});
|
}
|
return params
|
},
|
},
|
{ label: '订单号', prop: 'orderNo' },
|
{
|
label: "零件号",
|
prop: "partNo",
|
width: "160px",
|
dataType: "link",
|
linkMethod: "openUnPassDialog",
|
},
|
{ label: '零件描述', prop: 'partDesc',width: "160px" },
|
{
|
label: '物料属性',
|
prop: 'materialProp',
|
formatData: (params) => {
|
if (!params) return null
|
|
for (let i = 0; i < this.dict.type.material_prop_type.length; i++) {
|
const item = this.dict.type.material_prop_type[i]
|
if (item.value == params) {
|
return item.label
|
}
|
}
|
return null
|
}
|
},
|
{ label: '物料名称', prop: 'materialName',width: "160px" },
|
{ label: '生产批次', prop: 'productionBatch',width: "160px" },
|
{ label: '到货数量', prop: 'cargoQuantity' },
|
{ label: '规格型号', prop: 'specsModels' },
|
{ label: '报检日期', prop: 'inspectTime' },
|
{ label: '状态', prop: 'statusDB' },
|
{ label: '反馈人', prop: 'feedbackUser' },
|
{ label: '要检验的采购数量', prop: 'qtyToInspect',width: "140px" },
|
{ label: '反馈日期', prop: 'feedbackTime',width: "100px" },
|
{
|
label: "分类",
|
prop: "classification",
|
width: "100px",
|
dataType: "tag",
|
formatData: (params) => {
|
if (params == 0) {
|
return "一类不合格";
|
} else if(params == 1) {
|
return "二类不合格";
|
} else {
|
return null
|
}
|
},
|
formatType: (params) => {
|
if (params == 0) {
|
return "warning";
|
} else if(params == 1) {
|
return "info";
|
} else {
|
return "null";
|
}
|
},
|
},
|
{ label: '供应商名称', prop: 'supplierName' },
|
{
|
label: "不合格归属",
|
prop: "offGradeAscription",
|
width: "120px",
|
dataType: "tag",
|
formatData: (params) => {
|
if (params == 0) {
|
return "生产反馈不合格";
|
} else if(params == 1) {
|
return "检测不合格";
|
} else {
|
return null
|
}
|
},
|
formatType: (params) => {
|
if (params == 0) {
|
return "warning";
|
} else if(params == 1) {
|
return "info";
|
} else {
|
return "null";
|
}
|
},
|
},
|
{ label: '不合格描述', prop: 'unqualifiedDesc',width: "160px" },
|
{
|
dataType: 'action',
|
fixed: 'right',
|
label: '操作',
|
width: '220px',
|
operation: [
|
{
|
name: (row)=>{
|
return row.requestId !== null && row.operation==='退回' ? '重新提交' : '提交OA'
|
},
|
type: 'text',
|
clickFun: (row) => {
|
this.openOA(row);
|
},
|
disabled: (row, index) => {
|
return row.requestId !== null && row.operation!=='退回' // 有requestId说明已经提交过OA,不可再次提交
|
}
|
},
|
{
|
name: '查看OA流程',
|
type: 'text',
|
clickFun: (row) => {
|
this.OAView(row);
|
},
|
},
|
{
|
name: '删除',
|
type: 'text',
|
clickFun: (row) => {
|
this.deleteOA(row);
|
},
|
disabled: (row, index) => {
|
return row.requestId !== null && row.operation!=='退回' // 有requestId说明已经提交过OA,不可再次提交
|
}
|
},
|
]
|
}
|
],
|
page: {
|
total: 0,
|
size: 20,
|
current: 1
|
},
|
statusList: [],
|
dialogVisible: false, // 确认提交OA弹框
|
unPassDialog: false, // 不合格处理弹框
|
orderId: '',
|
OAProcess: false, // OA流程弹框
|
submitOALoading: false, // OA流程弹框提交按钮loading
|
deleteVisible: false, // OA流程删除弹框
|
cancelOALoading: false, // OA流程删除弹框提交按钮loading
|
exportLoading:false
|
};
|
},
|
mounted() {
|
this.refreshTable()
|
},
|
methods: {
|
exportUnqualifiedHandler(){
|
this.exportLoading = true
|
const newEntity = { ...this.entity }
|
if (newEntity.feedbackDateTime && newEntity.feedbackDateTime.length > 0) {
|
newEntity.feedbackStartTime = newEntity.feedbackDateTime[0]
|
newEntity.feedbackEndTime = newEntity.feedbackDateTime[1]
|
}
|
exportUnqualifiedHandler({...newEntity}).then(res=>{
|
transformExcel(res,'不合格处理记录.xlsx')
|
this.exportLoading = false
|
}).catch(error=>{
|
console.error(error)
|
})
|
},
|
refreshTable() {
|
this.tableLoading = true
|
const newEntity = { ...this.entity }
|
if (newEntity.feedbackDateTime && newEntity.feedbackDateTime.length > 0) {
|
newEntity.feedbackStartTime = newEntity.feedbackDateTime[0]
|
newEntity.feedbackEndTime = newEntity.feedbackDateTime[1]
|
}
|
page({ ...this.page, ...newEntity }).then(res => {
|
this.tableLoading = false
|
this.tableData = res.data.records
|
this.page.total = res.data.total
|
}).catch(err => {
|
this.tableLoading = false
|
})
|
},
|
// 重置
|
refresh() {
|
this.resetForm('entity')
|
this.refreshTable()
|
},
|
// 分页切换
|
pagination(page) {
|
this.page.size = page.limit
|
this.refreshTable()
|
},
|
// 打开不合格处理弹框
|
openUnPassDialog (row) {
|
this.unPassDialog = true
|
this.$nextTick(() => {
|
this.$refs.unPassDialog.getInsOrder('view', row)
|
})
|
},
|
// 关闭不合格处理弹框
|
resetForm1 () {
|
this.$refs.unPassDialog.$refs['unPassForm'].resetFields();
|
this.unPassDialog = false
|
this.$nextTick(()=>{
|
this.refreshTable('page')
|
})
|
},
|
// 打开删除OA确认弹框
|
deleteOA (row) {
|
this.handlerId = row.handlerId
|
this.deleteVisible = true
|
},
|
// 提交删除申请
|
cancelOA () {
|
this.de = true
|
deleteUnqualifiedHandler({id: this.handlerId,}).then(res => {
|
this.cancelOALoading = false
|
if (res.code === 200) {
|
this.deleteVisible = false
|
this.$message.success('删除成功')
|
this.refreshTable('page')
|
}
|
}).catch(error => {
|
this.cancelOALoading = false
|
console.error(error);
|
});
|
},
|
// 查看提交OA的数据
|
openOA (row) {
|
this.handlerId = row.handlerId
|
this.contract = row.contract
|
if(row && row.requestId !== null ){
|
// 重新提交OA,打开编辑弹框
|
this.unPassDialog = true
|
this.$nextTick(() => {
|
this.$refs.unPassDialog.getInsOrder('resubmit', row)
|
})
|
}else{
|
this.dialogVisible = true
|
}
|
},
|
// 查看OA流程
|
OAView (row) {
|
this.OAProcess = true
|
this.$nextTick(() => {
|
this.$refs.OAProcess.getInfo(row.handlerId,row?row.unqualifiedDesc:"")
|
})
|
},
|
// 关闭查看OA流程的弹框
|
closeOAProcess () {
|
this.OAProcess = false
|
},
|
//提交OA
|
submitOA(row) {
|
// 提交OA
|
this.submitOALoading = true
|
pushOA({handlerId: this.handlerId,contract:this.contract}).then(res => {
|
this.submitOALoading = false
|
if (res.code === 200) {
|
this.dialogVisible = false
|
this.$message.success('提交成功')
|
this.refreshTable('page')
|
}
|
}).catch(error => {
|
this.submitOALoading = false
|
console.error(error);
|
});
|
}
|
}
|
};
|
</script>
|