质量检验添加质检结果填报功能

This commit is contained in:
yinjinlu-pc\尹金路 2024-12-03 23:55:26 +08:00
parent e0ccb7944b
commit 5a51ba06b3
10 changed files with 977 additions and 40 deletions

View File

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询检测结果记录列表
export function listQcresult(query) {
return request({
url: '/mes/qc/qcresult/list',
method: 'get',
params: query
})
}
// 查询检测结果记录详细
export function getQcresult(resultId) {
return request({
url: '/mes/qc/qcresult/' + resultId,
method: 'get'
})
}
// 新增检测结果记录
export function addQcresult(data) {
return request({
url: '/mes/qc/qcresult',
method: 'post',
data: data
})
}
// 修改检测结果记录
export function updateQcresult(data) {
return request({
url: '/mes/qc/qcresult',
method: 'put',
data: data
})
}
// 删除检测结果记录
export function delQcresult(resultId) {
return request({
url: '/mes/qc/qcresult/' + resultId,
method: 'delete'
})
}

View File

@ -0,0 +1,52 @@
import request from '@/utils/request'
// 查询检测结果明细记录列表
export function listQcresultdetail(query) {
return request({
url: '/mes/qc/qcresultdetail/list',
method: 'get',
params: query
})
}
export function listDetails(query) {
return request({
url: '/mes/qc/qcresultdetail/listDetails',
method: 'get',
params: query
})
}
// 查询检测结果明细记录详细
export function getQcresultdetail(detailId) {
return request({
url: '/mes/qc/qcresultdetail/' + detailId,
method: 'get'
})
}
// 新增检测结果明细记录
export function addQcresultdetail(data) {
return request({
url: '/mes/qc/qcresultdetail',
method: 'post',
data: data
})
}
// 修改检测结果明细记录
export function updateQcresultdetail(data) {
return request({
url: '/mes/qc/qcresultdetail',
method: 'put',
data: data
})
}
// 删除检测结果明细记录
export function delQcresultdetail(detailId) {
return request({
url: '/mes/qc/qcresultdetail/' + detailId,
method: 'delete'
})
}

View File

@ -1,33 +1,54 @@
<template>
<div>
<select v-model="selectedValue">
<option v-for="(value, key) in dict" :value="key">{{ value }}</option>
</select>
<el-select v-model="selectedValue">
<el-option v-for="(item, index) in dict"
:key="item.dictValue"
:label="item.dictLabel"
:value="item.dictValue"
>{{ item.dictLabel }}</el-option>
</el-select>
</div>
</template>
<script>
import { listData, getDicts } from "@/api/system/dict/data";
import { watch } from "less";
export default {
props: {
dictName: {
type: String,
required: true
},
initialValue: {
type: String,
default: null
}
},
data() {
return {
selectedValue: null,
selectedValue: this.initialValue,
queryParams: {dictType: this.dictName},
dict: {}
};
},
watch: {
selectedValue(newValue) {
this.$emit("input", newValue);
}
},
created() {
this.getDictionary(this.dictName);
},
methods: {
getDictionary(name) {
getDicts(this.queryParams).then(response => {
this.dict = response.rows;
getDicts(name).then(response => {
this.dict = response.data;
// selectedValueselectedValue
if (this.initialValue && this.dict.some(item => item.dictValue === this.initialValue)) {
this.selectedValue = this.initialValue;
} else {
this.selectedValue = null; //
}
});
}
}

View File

@ -343,8 +343,8 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="检测结" prop="checkResult">
<el-select v-model="form.checkResult" placeholder="请选择检验结">
<el-form-item label="检测结" prop="checkResult">
<el-select v-model="form.checkResult" placeholder="请选择检验结">
<el-option
v-for="dict in dict.type.mes_qc_result"
:key="dict.value"
@ -368,10 +368,14 @@
</el-col>
</el-row>
</el-form>
<el-divider v-if="form.ipqcId !=null" content-position="center">检测项</el-divider>
<el-card shadow="always" v-if="form.ipqcId !=null" class="box-card">
<Ipqcline ref=line :ipqcId="form.ipqcId" :optType="optType"></Ipqcline>
</el-card>
<el-tabs type="border-card" v-if="form.ipqcId != null">
<el-tab-pane label="检测项">
<Ipqcline ref=line :ipqcId="form.ipqcId" :optType="optType"></Ipqcline>
</el-tab-pane>
<el-tab-pane label="检测结果">
<QCResutl ref="qcResult" :qcId="form.ipqcId" :qcType="'IPQC'" :optType="optType"></QCResutl>
</el-tab-pane>
</el-tabs>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="cancel" v-if="optType =='view' || form.status !='PREPARE' ">返回</el-button>
<el-button type="primary" @click="submitForm" v-if="form.status =='PREPARE' && optType !='view' "> </el-button>
@ -388,9 +392,10 @@ import {genCode} from "@/api/system/autocode/rule"
import WorkorderSelect from "@/components/workorderSelect/single.vue"
import WorkstationSelect from "@/components/workstationSelect/simpletableSingle.vue"
import Ipqcline from "./line.vue"
import QCResutl from "../qcresult/index.vue";
export default {
name: "Ipqc",
components: {WorkorderSelect,WorkstationSelect,Ipqcline},
components: {WorkorderSelect,WorkstationSelect,Ipqcline,QCResutl},
dicts: ['mes_ipqc_type','mes_qc_result','mes_order_status'],
data() {
return {

View File

@ -49,8 +49,8 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="检测结" prop="checkResult">
<el-select v-model="queryParams.checkResult" placeholder="请选择检测结">
<el-form-item label="检测结" prop="checkResult">
<el-select v-model="queryParams.checkResult" placeholder="请选择检测结">
<el-option
v-for="dict in dict.type.mes_qc_result"
:key="dict.value"
@ -154,7 +154,7 @@
<el-table-column label="接收数量" width="90px" align="center" prop="quantityRecived" />
<el-table-column label="检测数量" width="90px" align="center" prop="quantityCheck" />
<el-table-column label="不合格数" align="center" prop="quantityUnqualified" />
<el-table-column label="检测结" align="center" prop="checkResult" >
<el-table-column label="检测结" align="center" prop="checkResult" >
<template slot-scope="scope">
<dict-tag :options="dict.type.mes_qc_result" :value="scope.row.checkResult"/>
</template>
@ -327,8 +327,8 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="检测结" prop="checkResult">
<el-select v-model="form.checkResult" placeholder="请选择检测结">
<el-form-item label="检测结" prop="checkResult">
<el-select v-model="form.checkResult" placeholder="请选择检测结">
<el-option
v-for="dict in dict.type.mes_qc_result"
:key="dict.value"
@ -384,10 +384,14 @@
</el-row>
</el-collapse-item>
</el-collapse>
<el-divider v-if="form.iqcId !=null" content-position="center">检测项</el-divider>
<el-card shadow="always" v-if="form.iqcId !=null" class="box-card">
<el-tabs type="border-card" v-if="form.iqcId != null">
<el-tab-pane label="检测项">
<IqcLine ref=line :iqcId="form.iqcId" :optType="optType"></IqcLine>
</el-card>
</el-tab-pane>
<el-tab-pane label="检测结果">
<QCResutl ref="qcResult" :qcId="form.iqcId" :qcType="'IQC'" :optType="optType"></QCResutl>
</el-tab-pane>
</el-tabs>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="cancel" v-if="optType =='view' || form.status !='PREPARE' ">返回</el-button>
@ -404,12 +408,13 @@ import { listIqc, getIqc, delIqc, addIqc, updateIqc } from "@/api/mes/qc/iqc";
import ItemSelect from "@/components/itemSelect/single.vue";
import VendorSelect from "@/components/vendorSelect/single.vue";
import IqcLine from "./iqcline.vue";
import QCResutl from "../qcresult/index.vue";
import {genCode} from "@/api/system/autocode/rule"
import {getReport,getReport2} from "@/api/mes/report/report"
export default {
name: "Iqc",
dicts: ['mes_qc_result','mes_order_status'],
components: {ItemSelect,VendorSelect,IqcLine},
components: {ItemSelect,VendorSelect,IqcLine,QCResutl},
data() {
return {
//

View File

@ -41,7 +41,6 @@
<Defectrecord ref="defectDialog" :qcId="defect_iqcid" :lineId="defect_lineid" :qcType="defect_qctype" :optType="optType"></Defectrecord>
</div>
</template>
<script>
import { listIqcline, getIqcline, delIqcline, addIqcline, updateIqcline } from "@/api/mes/qc/iqcline";
import Defectrecord from "../defectrecord/index.vue"

View File

@ -41,8 +41,8 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="检测结" prop="checkResult">
<el-select v-model="queryParams.checkResult" placeholder="请选择检测结">
<el-form-item label="检测结" prop="checkResult">
<el-select v-model="queryParams.checkResult" placeholder="请选择检测结">
<el-option
v-for="dict in dict.type.mes_qc_result"
:key="dict.value"
@ -128,7 +128,7 @@
<el-table-column label="检测数量" align="center" prop="quantityCheck" />
<el-table-column label="不合格数" align="center" prop="quantityUnqualified" />
<el-table-column label="检测结" align="center" prop="checkResult" >
<el-table-column label="检测结" align="center" prop="checkResult" >
<template slot-scope="scope">
<dict-tag :options="dict.type.mes_qc_result" :value="scope.row.checkResult"/>
</template>
@ -301,8 +301,8 @@
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="检测结" prop="checkResult">
<el-select v-model="form.checkResult" placeholder="请选择检测结">
<el-form-item label="检测结" prop="checkResult">
<el-select v-model="form.checkResult" placeholder="请选择检测结">
<el-option
v-for="dict in dict.type.mes_qc_result"
:key="dict.value"
@ -359,10 +359,16 @@
</el-collapse-item>
</el-collapse>
</el-form>
<el-divider v-if="form.oqcId !=null" content-position="center">检测项</el-divider>
<el-card shadow="always" v-if="form.oqcId !=null" class="box-card">
<Oqcline ref=line :oqcId="form.oqcId" :optType="optType"></Oqcline>
</el-card>
<el-tabs type="border-card" v-if="form.oqcId != null">
<el-tab-pane label="检测项">
<Oqcline ref=line :oqcId="form.oqcId" :optType="optType"></Oqcline>
</el-tab-pane>
<el-tab-pane label="检测结果">
<QCResutl ref="qcResult" :qcId="form.oqcId" :qcType="'OQC'" :optType="optType"></QCResutl>
</el-tab-pane>
</el-tabs>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="cancel" v-if="optType =='view' || form.status !='PREPARE' ">返回</el-button>
<el-button type="primary" @click="submitForm" v-if="form.status =='PREPARE' && optType !='view' "> </el-button>
@ -379,11 +385,12 @@ import ItemSelect from "@/components/itemSelect/single.vue";
import ClientSelect from "@/components/clientSelect/single.vue";
import {genCode} from "@/api/system/autocode/rule";
import Oqcline from "./line.vue";
import QCResutl from "../qcresult/index.vue";
export default {
name: "Oqc",
dicts: ['mes_order_status','mes_qc_result'],
components: {
ItemSelect,Oqcline,ClientSelect
ItemSelect,Oqcline,ClientSelect,QCResutl
},
data() {
return {

View File

@ -166,7 +166,7 @@
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-col :span="12">
<el-form-item label="检测值类型" prop="qcResultType">
<el-select v-model="form.qcResultType" placeholder="请选择检测值类型">
<el-option
@ -178,12 +178,14 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="16">
<el-form-item label="值属性" v-if="form.qcResultType == 'FILE' " prop="qcResultSpc">
<el-input v-model="form.qcResultSpc" placeholder="请输入文件格式" />
<el-col :span="12">
<el-form-item label="类型" v-if="form.qcResultType == 'FILE' " prop="qcResultSpc">
<el-radio-group v-model="form.qcResultSpc" placeholder="请选择文件属性">
<el-radio label="IMG">图片/照片</el-radio>
<el-radio label="FILE">文件</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="值属性" v-else-if="form.qcResultType == 'DICT' " prop="qcResultSpc">
<el-form-item label="字典项" v-else-if="form.qcResultType == 'DICT' " prop="qcResultSpc">
<el-input v-model="form.qcResultSpc" readonly placeholder="请选择字典" >
<el-button slot="append" @click="handleSelectDict" icon="el-icon-search"></el-button>
</el-input>
@ -263,7 +265,20 @@ export default {
],
qcResultType: [
{ required: true, message: "请选择检测项值类型", trigger: "change" }
]
],
qcResultSpc: [
{ required: true, message: "请选择检测项值类型", trigger: "blur",
validator: (rule, value, callback) => {
if (this.form.qcResultType === 'FILE' && !value) {
callback(new Error('文件类型不能为空'));
} else if (this.form.qcResultType === 'DICT' && !value) {
callback(new Error('字典项不能为空'));
} else {
callback();
}
}
}
],
}
};
},
@ -293,6 +308,8 @@ export default {
indexName: null,
indexType: null,
qcTool: null,
qcResultType: null,
qcResultSpc: null,
remark: null,
attr1: null,
attr2: null,

View File

@ -0,0 +1,454 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="结果记录ID" prop="resultId">
<el-input
v-model="queryParams.resultId"
placeholder="请输入结果记录ID"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="检测项ID" prop="indexId">
<el-input
v-model="queryParams.indexId"
placeholder="请输入检测项ID"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="检测项类型" prop="indexType">
<el-select v-model="queryParams.indexType" placeholder="请选择检测项类型" clearable>
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
<el-form-item label="检测工具" prop="qcTool">
<el-input
v-model="queryParams.qcTool"
placeholder="请输入检测工具"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="标准值" prop="standerVal">
<el-input
v-model="queryParams.standerVal"
placeholder="请输入标准值"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="单位" prop="unitOfMeasure">
<el-input
v-model="queryParams.unitOfMeasure"
placeholder="请输入单位"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="误差上限" prop="thresholdMax">
<el-input
v-model="queryParams.thresholdMax"
placeholder="请输入误差上限"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="误差下限" prop="thresholdMin">
<el-input
v-model="queryParams.thresholdMin"
placeholder="请输入误差下限"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="质检值类型" prop="qcResultType">
<el-select v-model="queryParams.qcResultType" placeholder="请选择质检值类型" clearable>
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
<el-form-item label="值属性" prop="qcResultSpc">
<el-input
v-model="queryParams.qcResultSpc"
placeholder="请输入值属性"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="浮点值" prop="qcValFloat">
<el-input
v-model="queryParams.qcValFloat"
placeholder="请输入浮点值"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="整数" prop="qcValInteger">
<el-input
v-model="queryParams.qcValInteger"
placeholder="请输入整数"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="字典项" prop="qcValDict">
<el-input
v-model="queryParams.qcValDict"
placeholder="请输入字典项"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="预留字段1" prop="attr1">
<el-input
v-model="queryParams.attr1"
placeholder="请输入预留字段1"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="预留字段2" prop="attr2">
<el-input
v-model="queryParams.attr2"
placeholder="请输入预留字段2"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="预留字段3" prop="attr3">
<el-input
v-model="queryParams.attr3"
placeholder="请输入预留字段3"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="预留字段4" prop="attr4">
<el-input
v-model="queryParams.attr4"
placeholder="请输入预留字段4"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['qc:qcresultdetail:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['qc:qcresultdetail:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['qc:qcresultdetail:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['qc:qcresultdetail:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="qcresultdetailList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="流水号" align="center" prop="detailId" />
<el-table-column label="结果记录ID" align="center" prop="resultId" />
<el-table-column label="检测项ID" align="center" prop="indexId" />
<el-table-column label="检测项类型" align="center" prop="indexType" />
<el-table-column label="检测工具" align="center" prop="qcTool" />
<el-table-column label="检测要求" align="center" prop="checkMethod" />
<el-table-column label="标准值" align="center" prop="standerVal" />
<el-table-column label="单位" align="center" prop="unitOfMeasure" />
<el-table-column label="误差上限" align="center" prop="thresholdMax" />
<el-table-column label="误差下限" align="center" prop="thresholdMin" />
<el-table-column label="质检值类型" align="center" prop="qcResultType" />
<el-table-column label="值属性" align="center" prop="qcResultSpc" />
<el-table-column label="浮点值" align="center" prop="qcValFloat" />
<el-table-column label="整数" align="center" prop="qcValInteger" />
<el-table-column label="文字" align="center" prop="qcValText" />
<el-table-column label="字典项" align="center" prop="qcValDict" />
<el-table-column label="文件" align="center" prop="qcValFile" />
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="预留字段1" align="center" prop="attr1" />
<el-table-column label="预留字段2" align="center" prop="attr2" />
<el-table-column label="预留字段3" align="center" prop="attr3" />
<el-table-column label="预留字段4" align="center" prop="attr4" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['qc:qcresultdetail:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['qc:qcresultdetail:remove']"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改检测结果明细记录对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="结果记录ID" prop="resultId">
<el-input v-model="form.resultId" placeholder="请输入结果记录ID" />
</el-form-item>
<el-form-item label="检测项ID" prop="indexId">
<el-input v-model="form.indexId" placeholder="请输入检测项ID" />
</el-form-item>
<el-form-item label="检测项类型" prop="indexType">
<el-select v-model="form.indexType" placeholder="请选择检测项类型">
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
<el-form-item label="检测工具" prop="qcTool">
<el-input v-model="form.qcTool" placeholder="请输入检测工具" />
</el-form-item>
<el-form-item label="检测要求" prop="checkMethod">
<el-input v-model="form.checkMethod" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="标准值" prop="standerVal">
<el-input v-model="form.standerVal" placeholder="请输入标准值" />
</el-form-item>
<el-form-item label="单位" prop="unitOfMeasure">
<el-input v-model="form.unitOfMeasure" placeholder="请输入单位" />
</el-form-item>
<el-form-item label="误差上限" prop="thresholdMax">
<el-input v-model="form.thresholdMax" placeholder="请输入误差上限" />
</el-form-item>
<el-form-item label="误差下限" prop="thresholdMin">
<el-input v-model="form.thresholdMin" placeholder="请输入误差下限" />
</el-form-item>
<el-form-item label="质检值类型" prop="qcResultType">
<el-select v-model="form.qcResultType" placeholder="请选择质检值类型">
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item>
<el-form-item label="值属性" prop="qcResultSpc">
<el-input v-model="form.qcResultSpc" placeholder="请输入值属性" />
</el-form-item>
<el-form-item label="浮点值" prop="qcValFloat">
<el-input v-model="form.qcValFloat" placeholder="请输入浮点值" />
</el-form-item>
<el-form-item label="整数" prop="qcValInteger">
<el-input v-model="form.qcValInteger" placeholder="请输入整数" />
</el-form-item>
<el-form-item label="文字" prop="qcValText">
<el-input v-model="form.qcValText" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="字典项" prop="qcValDict">
<el-input v-model="form.qcValDict" placeholder="请输入字典项" />
</el-form-item>
<el-form-item label="文件">
<file-upload v-model="form.qcValFile"/>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="预留字段1" prop="attr1">
<el-input v-model="form.attr1" placeholder="请输入预留字段1" />
</el-form-item>
<el-form-item label="预留字段2" prop="attr2">
<el-input v-model="form.attr2" placeholder="请输入预留字段2" />
</el-form-item>
<el-form-item label="预留字段3" prop="attr3">
<el-input v-model="form.attr3" placeholder="请输入预留字段3" />
</el-form-item>
<el-form-item label="预留字段4" prop="attr4">
<el-input v-model="form.attr4" placeholder="请输入预留字段4" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listQcresultdetail, getQcresultdetail, delQcresultdetail, addQcresultdetail, updateQcresultdetail } from "@/api/mes/qc/qcresultdetail";
export default {
name: "Qcresultdetail",
data() {
return {
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
qcresultdetailList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
resultId: null, indexId: null, indexType: null, qcTool: null, checkMethod: null, standerVal: null, unitOfMeasure: null, thresholdMax: null, thresholdMin: null, qcResultType: null, qcResultSpc: null, qcValFloat: null, qcValInteger: null, qcValText: null, qcValDict: null, qcValFile: null, attr1: null, attr2: null, attr3: null, attr4: null, },
//
form: {},
//
rules: {
resultId: [
{ required: true, message: "结果记录ID不能为空", trigger: "blur" }
], indexId: [
{ required: true, message: "检测项ID不能为空", trigger: "blur" }
], qcResultType: [
{ required: true, message: "质检值类型不能为空", trigger: "change" }
], }
};
},
created() {
this.getList();
},
methods: {
/** 查询检测结果明细记录列表 */
getList() {
this.loading = true;
listQcresultdetail(this.queryParams).then(response => {
this.qcresultdetailList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
detailId: null, resultId: null, indexId: null, indexType: null, qcTool: null, checkMethod: null, standerVal: null, unitOfMeasure: null, thresholdMax: null, thresholdMin: null, qcResultType: null, qcResultSpc: null, qcValFloat: null, qcValInteger: null, qcValText: null, qcValDict: null, qcValFile: null, remark: null, attr1: null, attr2: null, attr3: null, attr4: null, createBy: null, createTime: null, updateBy: null, updateTime: null };
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.detailId)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加检测结果明细记录";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const detailId = row.detailId || this.ids
getQcresultdetail(detailId).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改检测结果明细记录";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.detailId != null) {
updateQcresultdetail(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addQcresultdetail(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const detailIds = row.detailId || this.ids;
this.$modal.confirm('是否确认删除检测结果明细记录编号为"' + detailIds + '"的数据项?').then(function() {
return delQcresultdetail(detailIds);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('qc/qcresultdetail/export', {
...this.queryParams
}, `qcresultdetail_${new Date().getTime()}.xlsx`)
}
}
};
</script>

View File

@ -0,0 +1,333 @@
<template>
<div class="app-container">
<el-row v-if="optType!= 'view'" :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['qc:qcresult:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['qc:qcresult:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['qc:qcresult:remove']"
>删除</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="qcresultList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="样品编号" align="center" prop="resultCode" />
<el-table-column label="对应的物资SN" align="center" prop="snCode" />
<el-table-column label="操作" v-if="optType != 'view'" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['qc:qcresult:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['qc:qcresult:remove']"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改检测结果记录对话框 -->
<el-dialog :title="title" :visible.sync="open" width="960px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-row>
<el-col :span="8">
<el-form-item label="样品编号" prop="resultCode">
<el-input v-model="form.resultCode" placeholder="请输入记录编号" />
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label-width="80">
<el-switch v-model="autoGenFlag"
active-color="#13ce66"
active-text="自动生成"
@change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view'" >
</el-switch>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="SN" prop="snCode">
<el-input v-model="form.snCode" placeholder="请输入对应的物资SN" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-col>
</el-row>
<el-divider>检测值</el-divider>
<div v-for="(item, index) in form.items" :key="index">
<el-row>
<el-col :span="12">
<el-form-item :label="'检测项' + (index + 1)" :prop="'items.' + index + '.indexName'">
<el-input v-model="item.indexName" readonly="readonly" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item v-if="item.qcResultType =='TEXT'" label="检测值" :prop="'items.' + index + '.qcValText'">
<el-input type="textarea" v-model="item.qcValText" placeholder="请输入检测值" />
</el-form-item>
<el-form-item v-else-if="item.qcResultType =='FLOAT'" label="检测值" :prop="'items.' + index + '.qcValFloat'">
<el-input v-model="item.qcValFloat" placeholder="请输入检测值" />
</el-form-item>
<el-form-item v-else-if="item.qcResultType =='INTEGER'" label="检测值" :prop="'items.' + index + '.qcValInteger'">
<el-input v-model="item.qcValInteger" placeholder="请输入检测值" />
</el-form-item>
<el-form-item v-else-if="item.qcResultType =='DICT'" label="检测值" :prop="'items.' + index + '.qcValDict'">
<DictDataSelect :dictName="item.qcResultSpc" v-model="item.qcValDict" :initialValue="item.qcValDict"></DictDataSelect>
</el-form-item>
<el-form-item v-else :label="'文件 ' + (index + 1)" :prop="'items.' + index + '.qcValFile'">
<ImageUpload v-if="item.qcResultType =='FILE' && item.qcResultSpc == 'IMG'" v-model="item.qcValFile" :limit="1" :fileSize="10" :fileType="['jpg','png','jpeg']" @onUploaded="(file) => handleUploaded(file,index)" @onRemoved="(file) => handleRemoved(file,index)" ></ImageUpload>
<FileUpload v-else="item.qcResultType == 'FILE' && item.qcResultSpc == 'FILE'" v-model="item.qcValFile" :limit="1" :fileSize="10" :fileType="['text','doc','docx','excel','mp4']" @onUploaded="(file) => handleUploaded(file,index)" @onRemoved="(file) => handleRemoved(file,index)"></FileUpload>
</el-form-item>
</el-col>
</el-row>
<el-divider></el-divider>
</div>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listQcresult, getQcresult, delQcresult, addQcresult, updateQcresult } from "@/api/mes/qc/qcresult";
import { listQcresultdetail, listDetails ,getQcresultdetail, delQcresultdetail, addQcresultdetail, updateQcresultdetail } from "@/api/mes/qc/qcresultdetail";
import DictDataSelect from "@/components/DictSelect/dictOptionSelect.vue"
import {genCode} from "@/api/system/autocode/rule"
export default {
autoGenFlag : false,
name: "Qcresult",
props:{
qcId: null,
qcType: null,
optType: null,
},
components: { DictDataSelect },
data() {
return {
optType2: this.optType,
autoGenFlag : false,
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
qcresultList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
resultCode: null, sourceDocId: this.qcId, sourceDocCode: null, sourceDocName: null, sourceDocType: this.qcType, itemId: null, itemCode: null, itemName: null, specification: null, unitOfMeasure: null, snCode: null, },
queryParams2: {
qcId:this.qcId,
qcType:this.qcType,
resultId: null
},
//
form: {
},
//
rules: {
resultCode: [
{ required: true, message: "记录编号不能为空", trigger: "blur" }
], itemId: [
{ required: true, message: "产品物料ID不能为空", trigger: "blur" }
], }
};
},
created() {
this.getList();
},
methods: {
/** 查询检测结果记录列表 */
getList() {
this.loading = true;
listQcresult(this.queryParams).then(response => {
this.qcresultList = response.rows;
this.total = response.total;
this.loading = false;
});
},
/**
* 此处无论是否有传递resultId参数都会返回所有检查项的结果记录明细列表
*/
getDetailList() {
this.loading = true;
listDetails(this.queryParams2).then(response => {
debugger;
this.form.items = response.data;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
resultId: null, resultCode: null, sourceDocId: this.qcId, sourceDocCode: null, sourceDocName: null, sourceDocType: this.qcType, itemId: null, itemCode: null, itemName: null, specification: null, unitOfMeasure: null, snCode: null, remark: null, attr1: null, attr2: null, attr3: null, attr4: null, createBy: null, createTime: null, updateBy: null, updateTime: null,
items: [],
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.resultId)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加检测结果记录";
this.optType2 = "add";
this.getDetailList();
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const resultId = row.resultId || this.ids
getQcresult(resultId).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改检测结果记录";
this.optType2 = "edit";
this.queryParams2.resultId = this.form.resultId
this.getDetailList();
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
debugger;
if (this.form.resultId != null) {
updateQcresult(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addQcresult(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const resultIds = row.resultId || this.ids;
this.$modal.confirm('是否确认删除检测结果记录编号为"' + resultIds + '"的数据项?').then(function() {
return delQcresult(resultIds);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('qc/qcresult/export', {
...this.queryParams
}, `qcresult_${new Date().getTime()}.xlsx`)
},
/** 上传完成 */
handleUploaded(url,index){
this.form.items[index].qcValFile = url;
},
/** 移除上传文件 */
handleRemoved(url,index){
this.form.items[index].qcValFile = null;
},
//
handleAutoGenChange(autoGenFlag){
if(autoGenFlag){
genCode('QC_RESULT_CODE').then(response =>{
this.form.resultCode = response;
});
}else{
this.form.resultCode = null;
}
},
}
};
</script>