factory_web/src/views/qm/qctDetail.vue

490 lines
20 KiB
Vue

<template>
<el-drawer
v-model="visible"
title="检测表详情"
:size="'90%'"
destroy-on-close
@closed="$emit('closed')"
>
<div style="padding: 8px">
<el-card style="width: 100%" header="基本信息" shadow="hover">
<el-descriptions>
<el-descriptions-item label="名称">{{qctItem.name}}</el-descriptions-item>
<el-descriptions-item label="编号">{{qctItem.number}}</el-descriptions-item>
<el-descriptions-item label="检测类型">
<span v-for="(item,index) in qctItem.tags" :key="item">
{{ tags_[item] }} <span v-if="index < qctItem.tags.length - 1">、</span>
</span>
</el-descriptions-item>
<!-- <el-descriptions-item label="创建时间">{{qctItem.create_time}}</el-descriptions-item> -->
</el-descriptions>
</el-card>
<div style="height: 8px"></div>
<div>
<!-- 检测物料qctmat -->
<el-card style="width: 100%" header="检测物料" shadow="hover">
<sc-form-table
hideDelete
hideIndex
:tableHeight="200"
v-model="qctmatlist"
:addTemplate="mataddTemplate"
placeholder="暂无数据"
>
<el-table-column prop="type" label="物料">
<template #default="scope">
<span v-if="!scope.row.isEdit">{{ scope.row.material_name }}</span>
<xtSelect
v-else
:apiObj="apiObj"
v-model="scope.row.material"
v-model:label="scope.row.material_name"
style="width:100%"
>
<el-table-column label="名称" prop="name"></el-table-column>
<el-table-column label="工序" prop="process_name"></el-table-column>
<el-table-column label="规格" prop="specification"></el-table-column>
</xtSelect>
</template>
</el-table-column>
<el-table-column prop="time" label="追溯层级">
<template #default="scope">
<span v-if="!scope.row.isEdit">{{ tracing_[scope.row.tracing] }}</span>
<el-select
v-else
v-model="scope.row.tracing"
filterable
placeholder="请选择追溯层级"
>
<el-option
v-for="item in tracingOptions"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column prop="open" label="操作" width="125" align="center">
<template #default="scope">
<el-button
v-if="scope.row.isEdit"
text
type="primary"
size="small"
@click="formTableAdd(scope.row,'mat')"
>保存</el-button
>
<el-button
v-else
text
type="primary"
size="small"
@click="formTableEdit(scope.row,'mat')"
>编辑</el-button
>
<el-button
v-if="!scope.row.isEdit"
text
type="danger"
size="small"
@click="formTableDel(scope.row.id,'mat')"
>删除</el-button
>
</template>
</el-table-column>
</sc-form-table>
</el-card>
<!-- 检测项qcttestitem -->
<el-card style="width: 100%" header="检测项" shadow="hover">
<sc-form-table
hideIndex
:tableHeight="300"
v-model="qcttestitemlist"
:addTemplate="defectaddTemplate"
placeholder="暂无数据"
>
<el-table-column prop="val" label="排序" width="80">
<template #default="scope">
<span v-if="!scope.row.isEdit">{{ scope.row.sort }}</span>
<el-input v-else v-model="scope.row.sort" placeholder="排序"></el-input>
</template>
</el-table-column>
<el-table-column prop="time" label="检测项">
<template #default="scope">
<span v-if="!scope.row.isEdit">{{scope.row.testitem_name}}</span>
<xtSelect
v-else
:apiObj="apiObj2"
v-model="scope.row.testitem"
v-model:label="scope.row.testitem_name"
v-model:obj="testitemrow"
style="width:100%"
>
<el-table-column label="名称" prop="name"></el-table-column>
<el-table-column label="描述" prop="description"></el-table-column>
</xtSelect>
</template>
</el-table-column>
<el-table-column prop="type" label="备注">
<template #default="scope">
<span v-if="!scope.row.isEdit">{{ scope.row.note }}</span>
<el-input v-else v-model="testitemrow.description" placeholder="备注"></el-input>
</template>
</el-table-column>
<el-table-column prop="open" label="操作" width="125" align="center">
<template #default="scope">
<el-button
v-if="scope.row.isEdit"
text
type="primary"
size="small"
@click="formTableAdd(scope.row,'testitem')"
>保存</el-button
>
<el-button
v-else
text
type="primary"
size="small"
@click="formTableEdit(scope.row,'testitem')"
>编辑</el-button
>
<el-button
v-if="!scope.row.isEdit"
text
type="danger"
size="small"
@click="formTableDel(scope.row.id,'testitem')"
>删除</el-button
>
</template>
</el-table-column>
</sc-form-table>
</el-card>
<!-- 检测缺陷项qctdefect -->
<el-card style="width: 100%" header="检测缺陷项" shadow="hover">
<sc-form-table
hideIndex
:tableHeight="300"
v-model="qctdefectlist"
:addTemplate="testitemaddTemplate"
placeholder="暂无数据"
>
<el-table-column prop="val" label="排序" width="80">
<template #default="scope">
<span v-if="!scope.row.isEdit">{{ scope.row.sort }}</span>
<el-input v-else v-model="scope.row.sort" placeholder="排序"></el-input>
</template>
</el-table-column>
<el-table-column prop="time" label="缺陷项">
<template #default="scope">
<span v-if="!scope.row.isEdit">{{scope.row.defect_name}}</span>
<xtSelect
v-else
:apiObj="apiObj3"
v-model="scope.row.defect"
v-model:obj="defectrow"
v-model:label="scope.row.defect_name"
style="width:100%"
>
<el-table-column label="名称" prop="name"></el-table-column>
<el-table-column label="分类" prop="cate"></el-table-column>
</xtSelect>
</template>
</el-table-column>
<el-table-column prop="val" label="判定表达式" min-width="150">
<template #default="scope">
<span v-if="!scope.row.isEdit">{{ scope.row.rule_expression }}</span>
<el-input v-else v-model="scope.row.rule_expression" placeholder="请输入判定表达式"></el-input>
</template>
</el-table-column>
<el-table-column prop="type" label="备注">
<template #default="scope">
<span v-if="!scope.row.isEdit">{{ scope.row.note }}</span>
<el-input v-else v-model="scope.row.note" placeholder="备注"></el-input>
</template>
</el-table-column>
<el-table-column prop="open" label="操作" width="125" align="center">
<template #default="scope">
<el-button
v-if="scope.row.isEdit"
text
type="primary"
size="small"
@click="formTableAdd(scope.row,'defect')"
>保存</el-button
>
<el-button
v-else
text
type="primary"
size="small"
@click="formTableEdit(scope.row,'defect')"
>编辑</el-button
>
<el-button
v-if="!scope.row.isEdit"
text
type="danger"
size="small"
@click="formTableDel(scope.row.id,'defect')"
>删除</el-button
>
</template>
</el-table-column>
</sc-form-table>
</el-card>
</div>
</div>
</el-drawer>
</template>
<script>
export default {
name: "qctDetail",
props: {
qctId: {
type: String,
default: "",
},
},
data() {
return {
dialog: {
check: false,
save: false,
},
apiObj:this.$API.mtm.material.list,
materials:[],
apiObj2:this.$API.qm.testitem.list,
testitemes:[],
apiObj3:this.$API.qm.defect.list,
defects:[],
apiObjMat: null,
apiObjDefect: null,
apiObjTestItem: null,
params: {},
qctItem: {},
qctmatlist:[], //物料
qctdefectlist:[],
qcttestitemlist:[],
visible: false,
tags_:{
"purin":"入厂检验",
"first":"首件检验",
"prod":"成品检验",
"process":"过程检验",
"performance":"性能检验"
},
tracing_:{
"test":"检测项",
"defect":"缺陷项",
},
tracingOptions:[
{value:'test',label:'检测项'},
{value:'defect',label:'缺陷项'},
],
mataddTemplate:{
tracing: "",
qct: this.qctId,
material: "",
edit: false,
},
defectaddTemplate:{
qct: this.qctId,
defect: "",
note:'',
sort:'',
edit: false,
rule_expression:'',
},
testitemaddTemplate:{
qct: this.qctId,
note:'',
sort:'',
testitem:'',
edit: false,
},
defectrow:{},
testitemrow:{},
};
},
mounted() {
this.apiObjMat = this.$API.inm.mioitem.list;
this.apiObjDefect = this.$API.inm.mioitem.list;
this.apiObjTestItem = this.$API.inm.mioitem.list;
this.qctItem =this.$TOOL.data.get("qctCurrent");
this.getLists();
},
watch:{
defectrow:{}
},
methods: {
open() {
this.visible = true;
},
getLists(){
let that = this;
that.qctmatlist = [],that.qctdefectlist =[],that.qcttestitemlist =[];
that.$API.qm.qctmat.list.req({qct:that.qctItem.id,page:0}).then(res=>{
res.forEach(item=>{
let obj = Object.assign({},item);
obj.isEdit = false;
that.qctmatlist.push(obj);
})
});
that.$API.qm.qctdefect.list.req({qct:that.qctItem.id,page:0}).then(res=>{
res.forEach(item=>{
let obj = Object.assign({},item);
obj.isEdit = false;
that.qctdefectlist.push(obj);
})
// that.qctdefectlist = res;
});
that.$API.qm.qcttestitem.list.req({qct:that.qctItem.id,page:0}).then(res=>{
res.forEach(item=>{
let obj = Object.assign({},item);
obj.isEdit = false;
that.qcttestitemlist.push(obj);
})
// that.qcttestitemlist = res;
});
},
//添加
formTableAdd(row,type) {
console.log('formTableAdd',row);
let that = this,api = '';
if(type=='defect'){
if(row.id!==''&&row.id!==undefined&&row.id!==null){
api = that.$API.qm.qctdefect.update;
}else{
row.note = that.defectrow.note;
api = that.$API.qm.qctdefect.create;
}
}else if(type=='mat'){
if(row.id!==''&&row.id!==undefined&&row.id!==null){
api = that.$API.qm.qctmat.update;
}else{
api = that.$API.qm.qctmat.create;
}
}else if(type=='testitem'){
if(row.id!==''&&row.id!==undefined&&row.id!==null){
api = that.$API.qm.qcttestitem.update;
}else{
row.note = that.testitemrow.description;
api = that.$API.qm.qcttestitem.create;
}
}
this.$nextTick(() => {
if(row.id!==''&&row.id!==undefined&&row.id!==null){
api.req(row.id,row).then((res) => {
that.$message.success("编辑成功");
that.getLists();
return res;
}).catch((err) => {
return err;
});
}else{
api.req(row).then((res) => {
that.$message.success("添加成功");
that.getLists();
return res;
}).catch((err) => {
return err;
});
}
})
},
//添加
formTableSave(row,type) {
let that = this,api = '';
if(type=='defect'){
row.note = that.defectrow.note;
api = that.$API.qm.qctdefect.create;
}else if(type=='mat'){
api = that.$API.qm.qctmat.create;
}else if(type=='testitem'){
row.note = that.testitemrow.description;
api = that.$API.qm.qcttestitem.create;
}
this.$nextTick(() => {
if(row.id!==''&&row.id!==undefined&&row.id!==null){
api.req(row).then((res) => {
that.$message.success("添加成功");
that.getLists();
return res;
}).catch((err) => {
return err;
});
}else{
api.req(row).then((res) => {
that.$message.success("添加成功");
that.getLists();
return res;
}).catch((err) => {
return err;
});
}
})
},
formTableEdit(row,type) {
if(type=='mat'){
this.qctmatlist.forEach((item, index) => {
if (item.id == row.id) {
this.qctmatlist[index].isEdit = true;
}
});
}else if(type=='testitem'){
this.qcttestitemlist.forEach((item, index) => {
if (item.id == row.id) {
this.qcttestitemlist[index].isEdit = true;
}
});
}else if(type=='defect'){
this.qctdefectlist.forEach((item, index) => {
if (item.id == row.id) {
this.qctdefectlist[index].isEdit = true;
}
});
}
},
//删除
formTableDel(id,type) {
let that = this,api = '';
if(type=='defect'){
api = that.$API.qm.qctdefect.delete;
}else if(type=='mat'){
api = that.$API.qm.qctmat.delete;
}else if(type=='testitem'){
api = that.$API.qm.qcttestitem.delete;
}
that.$confirm(`确定删除吗?`, "提示", {
type: "warning",
}).then(() => {
api.req(id).then((res) => {
that.$message.success("删除成功");
that.getLists();
return res;
}).catch((err) => {
return err;
});
}).catch(() => {});
},
//编辑
check_edit(row) {
this.mioitemId = row.id;
this.objitem = row;
this.dialog.check = true;
this.$nextTick(() => {
this.$refs.checkDialog.open("edit").setData(row);
});
},
},
};
</script>