feat(mes): refactor inspection result types and add new result detail structure
parent
47c84d3104
commit
db33e04451
|
|
@ -1,7 +1,7 @@
|
||||||
import request from '@/config/axios'
|
import request from '@/config/axios'
|
||||||
|
|
||||||
// MES 检验结果 VO
|
// MES 检验结果 VO
|
||||||
export interface QcResultVO {
|
export interface QcIndicatorResultVO {
|
||||||
id: number // 编号
|
id: number // 编号
|
||||||
code: string // 样品编号
|
code: string // 样品编号
|
||||||
qcId: number // 关联质检单ID
|
qcId: number // 关联质检单ID
|
||||||
|
|
@ -18,28 +18,22 @@ export interface QcResultVO {
|
||||||
itemSpecification: string // 规格型号
|
itemSpecification: string // 规格型号
|
||||||
unitName: string // 单位名称
|
unitName: string // 单位名称
|
||||||
// 子表
|
// 子表
|
||||||
items: QcResultDetailVO[] // 检验结果明细列表
|
items: QcIndicatorResultDetailVO[] // 检验结果明细列表
|
||||||
}
|
}
|
||||||
|
|
||||||
// MES 检验结果明细 VO
|
// MES 检验结果明细 VO
|
||||||
export interface QcResultDetailVO {
|
export interface QcIndicatorResultDetailVO {
|
||||||
id: number // 编号
|
id: number // 编号
|
||||||
resultId: number // 关联检验结果ID
|
resultId: number // 关联检验结果ID
|
||||||
indicatorId: number // 检测指标ID
|
indicatorId: number // 检测指标ID
|
||||||
toolId: number // 检测工具ID
|
value: string // 检测值(统一存为字符串)
|
||||||
unitMeasureId: number // 计量单位ID
|
|
||||||
valueType: number // 质检值类型
|
|
||||||
valueSpecification: string // 值属性
|
|
||||||
valueFloat: number // 浮点值
|
|
||||||
valueInteger: number // 整数值
|
|
||||||
valueText: string // 文字值
|
|
||||||
valueDict: string // 字典项值
|
|
||||||
valueFile: string // 文件值
|
|
||||||
remark: string // 备注
|
remark: string // 备注
|
||||||
// 关联查询字段
|
// 关联查询字段
|
||||||
indicatorCode: string // 检测指标编码
|
indicatorCode: string // 检测指标编码
|
||||||
indicatorName: string // 检测指标名称
|
indicatorName: string // 检测指标名称
|
||||||
indicatorType: string // 检测指标类型
|
indicatorType: string // 检测指标类型
|
||||||
|
valueType: number // 质检值类型(关联查询)
|
||||||
|
valueSpecification: string // 值属性(关联查询)
|
||||||
toolName: string // 检测工具名称
|
toolName: string // 检测工具名称
|
||||||
checkMethod: string // 检测方法
|
checkMethod: string // 检测方法
|
||||||
standardValue: number // 标准值
|
standardValue: number // 标准值
|
||||||
|
|
@ -49,34 +43,34 @@ export interface QcResultDetailVO {
|
||||||
}
|
}
|
||||||
|
|
||||||
// MES 检验结果 API
|
// MES 检验结果 API
|
||||||
export const QcResultApi = {
|
export const QcIndicatorResultApi = {
|
||||||
// 查询检验结果分页
|
// 查询检验结果分页
|
||||||
getResultPage: async (params: any) => {
|
getResultPage: async (params: any) => {
|
||||||
return await request.get({ url: `/mes/qc/result/page`, params })
|
return await request.get({ url: `/mes/qc/indicator-result/page`, params })
|
||||||
},
|
},
|
||||||
|
|
||||||
// 查询检验结果详情(含明细)
|
// 查询检验结果详情(含明细)
|
||||||
getResult: async (id: number) => {
|
getResult: async (id: number) => {
|
||||||
return await request.get({ url: `/mes/qc/result/get?id=` + id })
|
return await request.get({ url: `/mes/qc/indicator-result/get?id=` + id })
|
||||||
},
|
},
|
||||||
|
|
||||||
// 新增检验结果
|
// 新增检验结果
|
||||||
createResult: async (data: any) => {
|
createResult: async (data: any) => {
|
||||||
return await request.post({ url: `/mes/qc/result/create`, data })
|
return await request.post({ url: `/mes/qc/indicator-result/create`, data })
|
||||||
},
|
},
|
||||||
|
|
||||||
// 修改检验结果
|
// 修改检验结果
|
||||||
updateResult: async (data: any) => {
|
updateResult: async (data: any) => {
|
||||||
return await request.put({ url: `/mes/qc/result/update`, data })
|
return await request.put({ url: `/mes/qc/indicator-result/update`, data })
|
||||||
},
|
},
|
||||||
|
|
||||||
// 删除检验结果
|
// 删除检验结果
|
||||||
deleteResult: async (id: number) => {
|
deleteResult: async (id: number) => {
|
||||||
return await request.delete({ url: `/mes/qc/result/delete?id=` + id })
|
return await request.delete({ url: `/mes/qc/indicator-result/delete?id=` + id })
|
||||||
},
|
},
|
||||||
|
|
||||||
// 获取空值检测项模板(新建结果时用)
|
// 获取空值检测项模板(新建结果时用)
|
||||||
getDetailTemplate: async (qcId: number, qcType: number) => {
|
getDetailTemplate: async (qcId: number, qcType: number) => {
|
||||||
return await request.get({ url: `/mes/qc/result/detail-template`, params: { qcId, qcType } })
|
return await request.get({ url: `/mes/qc/indicator-result/detail-template`, params: { qcId, qcType } })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -264,7 +264,7 @@ export enum DICT_TYPE {
|
||||||
MES_TM_MAINTEN_TYPE = 'mes_tm_mainten_type', // MES 保养维护类型
|
MES_TM_MAINTEN_TYPE = 'mes_tm_mainten_type', // MES 保养维护类型
|
||||||
MES_DV_MACHINERY_STATUS = 'mes_dv_machinery_status', // MES 设备状态
|
MES_DV_MACHINERY_STATUS = 'mes_dv_machinery_status', // MES 设备状态
|
||||||
MES_DV_SUBJECT_TYPE = 'mes_dv_subject_type', // MES 点检保养项目类型
|
MES_DV_SUBJECT_TYPE = 'mes_dv_subject_type', // MES 点检保养项目类型
|
||||||
MES_INDEX_TYPE = 'mes_index_type', // MES 检测项类型
|
MES_INDICATOR_TYPE = 'mes_indicator_type', // MES 检测项类型
|
||||||
MES_QC_RESULT_TYPE = 'mes_qc_result_type', // MES 质检结果值类型
|
MES_QC_RESULT_TYPE = 'mes_qc_result_type', // MES 质检结果值类型
|
||||||
MES_DEFECT_LEVEL = 'mes_defect_level', // MES 缺陷等级
|
MES_DEFECT_LEVEL = 'mes_defect_level', // MES 缺陷等级
|
||||||
MES_PRO_WORK_ORDER_STATUS = 'mes_pro_work_order_status', // MES 生产工单状态
|
MES_PRO_WORK_ORDER_STATUS = 'mes_pro_work_order_status', // MES 生产工单状态
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@
|
||||||
class="!w-1/1"
|
class="!w-1/1"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="dict in getStrDictOptions(DICT_TYPE.MES_INDEX_TYPE)"
|
v-for="dict in getStrDictOptions(DICT_TYPE.MES_INDICATOR_TYPE)"
|
||||||
:key="dict.value"
|
:key="dict.value"
|
||||||
:label="dict.label"
|
:label="dict.label"
|
||||||
:value="dict.value"
|
:value="dict.value"
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@
|
||||||
class="!w-240px"
|
class="!w-240px"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="dict in getStrDictOptions(DICT_TYPE.MES_INDEX_TYPE)"
|
v-for="dict in getStrDictOptions(DICT_TYPE.MES_INDICATOR_TYPE)"
|
||||||
:key="dict.value"
|
:key="dict.value"
|
||||||
:label="dict.label"
|
:label="dict.label"
|
||||||
:value="dict.value"
|
:value="dict.value"
|
||||||
|
|
@ -88,7 +88,7 @@
|
||||||
<el-table-column label="缺陷描述" align="center" prop="name" min-width="200" />
|
<el-table-column label="缺陷描述" align="center" prop="name" min-width="200" />
|
||||||
<el-table-column label="检测项类型" align="center" prop="type" width="120">
|
<el-table-column label="检测项类型" align="center" prop="type" width="120">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :type="DICT_TYPE.MES_INDEX_TYPE" :value="scope.row.type" />
|
<dict-tag :type="DICT_TYPE.MES_INDICATOR_TYPE" :value="scope.row.type" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="缺陷等级" align="center" prop="level" width="120">
|
<el-table-column label="缺陷等级" align="center" prop="level" width="120">
|
||||||
|
|
|
||||||
|
|
@ -20,9 +20,8 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="检测项类型" prop="type">
|
<el-form-item label="检测项类型" prop="type">
|
||||||
<el-select v-model="formData.type" placeholder="请选择检测项类型" clearable class="!w-1/1">
|
<el-select v-model="formData.type" placeholder="请选择检测项类型" clearable class="!w-1/1">
|
||||||
<!-- TODO @AI:MES_INDEX_TYPE 改成 MES_INDICATOR_TYPE 类型,然后对应的值,相关的 sql、后端都要改变; -->
|
|
||||||
<el-option
|
<el-option
|
||||||
v-for="dict in getStrDictOptions(DICT_TYPE.MES_INDEX_TYPE)"
|
v-for="dict in getStrDictOptions(DICT_TYPE.MES_INDICATOR_TYPE)"
|
||||||
:key="dict.value"
|
:key="dict.value"
|
||||||
:label="dict.label"
|
:label="dict.label"
|
||||||
:value="dict.value"
|
:value="dict.value"
|
||||||
|
|
@ -48,19 +47,16 @@
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- TODO @AI:枚举类判断 -->
|
|
||||||
<!-- 动态显示:FILE 类型 -->
|
<!-- 动态显示:FILE 类型 -->
|
||||||
<el-form-item v-if="formData.resultType === 5" label="文件类型" prop="resultSpecification">
|
<el-form-item v-if="formData.resultType === MesQcResultValueType.FILE" label="文件类型" prop="resultSpecification">
|
||||||
<el-radio-group v-model="formData.resultSpecification">
|
<el-radio-group v-model="formData.resultSpecification">
|
||||||
<el-radio label="IMG">图片/照片</el-radio>
|
<el-radio label="IMG">图片/照片</el-radio>
|
||||||
<el-radio label="FILE">文件</el-radio>
|
<el-radio label="FILE">文件</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 动态显示:DICT 类型 -->
|
<!-- 动态显示:DICT 类型 -->
|
||||||
<!-- TODO @AI:枚举类判断 -->
|
|
||||||
<!-- TODO @AI:是不是抽个 dict/components/DictTypeSelect 组件出来;然后这边使用噢 -->
|
|
||||||
<el-form-item
|
<el-form-item
|
||||||
v-else-if="formData.resultType === 4"
|
v-else-if="formData.resultType === MesQcResultValueType.DICT"
|
||||||
label="字典类型"
|
label="字典类型"
|
||||||
prop="resultSpecification"
|
prop="resultSpecification"
|
||||||
>
|
>
|
||||||
|
|
@ -83,6 +79,7 @@
|
||||||
import { getStrDictOptions, getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
import { getStrDictOptions, getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||||
import { QcIndicatorApi, QcIndicatorVO } from '@/api/mes/qc/indicator'
|
import { QcIndicatorApi, QcIndicatorVO } from '@/api/mes/qc/indicator'
|
||||||
import { generateRandomStr } from '@/utils'
|
import { generateRandomStr } from '@/utils'
|
||||||
|
import { MesQcResultValueType } from '@/views/mes/utils/constants'
|
||||||
|
|
||||||
defineOptions({ name: 'IndicatorForm' })
|
defineOptions({ name: 'IndicatorForm' })
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@
|
||||||
class="!w-240px"
|
class="!w-240px"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="dict in getStrDictOptions(DICT_TYPE.MES_INDEX_TYPE)"
|
v-for="dict in getStrDictOptions(DICT_TYPE.MES_INDICATOR_TYPE)"
|
||||||
:key="dict.value"
|
:key="dict.value"
|
||||||
:label="dict.label"
|
:label="dict.label"
|
||||||
:value="dict.value"
|
:value="dict.value"
|
||||||
|
|
@ -88,7 +88,7 @@
|
||||||
<el-table-column label="检测项名称" align="center" prop="name" min-width="150" />
|
<el-table-column label="检测项名称" align="center" prop="name" min-width="150" />
|
||||||
<el-table-column label="检测项类型" align="center" prop="type" width="120">
|
<el-table-column label="检测项类型" align="center" prop="type" width="120">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :type="DICT_TYPE.MES_INDEX_TYPE" :value="scope.row.type" />
|
<dict-tag :type="DICT_TYPE.MES_INDICATOR_TYPE" :value="scope.row.type" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="检测工具" align="center" prop="tool" width="120" />
|
<el-table-column label="检测工具" align="center" prop="tool" width="120" />
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,16 @@
|
||||||
<!-- MES 检验结果表单弹窗(含动态检测值输入) -->
|
<!-- MES 检验结果表单弹窗(含动态检测值输入) -->
|
||||||
<!-- TODO @AI:这个文件名,可以更全面一点;另外,放到 components 目录下; -->
|
|
||||||
<template>
|
<template>
|
||||||
<Dialog :title="dialogTitle" v-model="dialogVisible" width="960px">
|
<Dialog :title="dialogTitle" v-model="dialogVisible" width="960px">
|
||||||
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="100px" v-loading="formLoading">
|
<el-form
|
||||||
|
ref="formRef"
|
||||||
|
:model="formData"
|
||||||
|
:rules="formRules"
|
||||||
|
label-width="100px"
|
||||||
|
v-loading="formLoading"
|
||||||
|
>
|
||||||
<el-row :gutter="16">
|
<el-row :gutter="16">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
|
<!-- TODO @AI:这里需要有生成的方法,参考别的 -->
|
||||||
<el-form-item label="样品编号" prop="code">
|
<el-form-item label="样品编号" prop="code">
|
||||||
<el-input v-model="formData.code" placeholder="请输入样品编号" />
|
<el-input v-model="formData.code" placeholder="请输入样品编号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
@ -34,20 +40,34 @@
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<!-- 浮点值 -->
|
<!-- 浮点值 -->
|
||||||
<el-form-item v-if="item.valueType === 1" label="检测值">
|
<el-form-item v-if="item.valueType === MesQcResultValueType.FLOAT" label="检测值">
|
||||||
<el-input-number v-model="item.valueFloat" :precision="4" placeholder="请输入" class="!w-1/1" />
|
<el-input-number
|
||||||
|
v-model="item.valueFloat"
|
||||||
|
:precision="4"
|
||||||
|
placeholder="请输入"
|
||||||
|
class="!w-1/1"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 整数值 -->
|
<!-- 整数值 -->
|
||||||
<el-form-item v-else-if="item.valueType === 2" label="检测值">
|
<el-form-item
|
||||||
<el-input-number v-model="item.valueInteger" :precision="0" placeholder="请输入" class="!w-1/1" />
|
v-else-if="item.valueType === MesQcResultValueType.INTEGER"
|
||||||
|
label="检测值"
|
||||||
|
>
|
||||||
|
<el-input-number
|
||||||
|
v-model="item.valueInteger"
|
||||||
|
:precision="0"
|
||||||
|
placeholder="请输入"
|
||||||
|
class="!w-1/1"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 文本值 -->
|
<!-- 文本值 -->
|
||||||
<el-form-item v-else-if="item.valueType === 3" label="检测值">
|
<el-form-item v-else-if="item.valueType === MesQcResultValueType.TEXT" label="检测值">
|
||||||
<el-input v-model="item.valueText" type="textarea" placeholder="请输入检测值" />
|
<el-input v-model="item.value" type="textarea" placeholder="请输入检测值" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 字典值 -->
|
<!-- 字典值 -->
|
||||||
<el-form-item v-else-if="item.valueType === 4" label="检测值">
|
<el-form-item v-else-if="item.valueType === MesQcResultValueType.DICT" label="检测值">
|
||||||
<el-select v-model="item.valueDict" placeholder="请选择" class="!w-1/1">
|
<!-- TODO @AI:这里是不是要用 StrDict;因为后端存储的字符串,统一的 -->
|
||||||
|
<el-select v-model="item.value" placeholder="请选择" class="!w-1/1">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="dict in getDictOptions(item.valueSpecification)"
|
v-for="dict in getDictOptions(item.valueSpecification)"
|
||||||
:key="dict.value"
|
:key="dict.value"
|
||||||
|
|
@ -57,12 +77,12 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 文件值 -->
|
<!-- 文件值 -->
|
||||||
<el-form-item v-else-if="item.valueType === 5" label="检测值">
|
<el-form-item v-else-if="item.valueType === MesQcResultValueType.FILE" label="检测值">
|
||||||
<el-input v-model="item.valueFile" placeholder="请输入文件地址" />
|
<el-input v-model="item.value" placeholder="请输入文件地址" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 未知类型 -->
|
<!-- 未知类型 -->
|
||||||
<el-form-item v-else label="检测值">
|
<el-form-item v-else label="检测值">
|
||||||
<el-input v-model="item.valueText" placeholder="请输入" />
|
<el-input v-model="item.value" placeholder="请输入" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
@ -78,16 +98,19 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { QcResultApi } from '@/api/mes/qc/indicatorresult'
|
import { QcIndicatorResultApi } from '@/api/mes/qc/indicatorresult'
|
||||||
import { getDictOptions } from '@/utils/dict'
|
import { getDictOptions } from '@/utils/dict'
|
||||||
|
import { MesQcResultValueType } from '@/views/mes/utils/constants'
|
||||||
|
|
||||||
defineOptions({ name: 'ResultForm' })
|
defineOptions({ name: 'QcIndicatorResultForm' })
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
qcId: number
|
qcId: number
|
||||||
qcType: number
|
qcType: number
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
|
// TODO @AI:补全注释,参考 system user form.vue
|
||||||
|
|
||||||
const { t } = useI18n()
|
const { t } = useI18n()
|
||||||
const message = useMessage()
|
const message = useMessage()
|
||||||
|
|
||||||
|
|
@ -123,8 +146,16 @@ const open = async (type: string, id?: number) => {
|
||||||
// 修改时加载已有数据(含明细)
|
// 修改时加载已有数据(含明细)
|
||||||
formLoading.value = true
|
formLoading.value = true
|
||||||
try {
|
try {
|
||||||
const data = await QcResultApi.getResult(id)
|
formData.value = await QcIndicatorResultApi.getResult(id)
|
||||||
formData.value = data
|
// 回填浮点/整数值用于 el-input-number 绑定
|
||||||
|
// TODO @AI:是不是可以 include 判断,这样转化简单点;
|
||||||
|
formData.value.items?.forEach((item: any) => {
|
||||||
|
if (item.valueType === MesQcResultValueType.FLOAT && item.value != null) {
|
||||||
|
item.valueFloat = Number(item.value)
|
||||||
|
} else if (item.valueType === MesQcResultValueType.INTEGER && item.value != null) {
|
||||||
|
item.valueInteger = Number(item.value)
|
||||||
|
}
|
||||||
|
})
|
||||||
} finally {
|
} finally {
|
||||||
formLoading.value = false
|
formLoading.value = false
|
||||||
}
|
}
|
||||||
|
|
@ -132,7 +163,7 @@ const open = async (type: string, id?: number) => {
|
||||||
// 新增时加载空值检测项模板
|
// 新增时加载空值检测项模板
|
||||||
formLoading.value = true
|
formLoading.value = true
|
||||||
try {
|
try {
|
||||||
formData.value.items = await QcResultApi.getDetailTemplate(props.qcId, props.qcType)
|
formData.value.items = await QcIndicatorResultApi.getDetailTemplate(props.qcId, props.qcType)
|
||||||
} finally {
|
} finally {
|
||||||
formLoading.value = false
|
formLoading.value = false
|
||||||
}
|
}
|
||||||
|
|
@ -148,12 +179,29 @@ const submitForm = async () => {
|
||||||
if (!valid) return
|
if (!valid) return
|
||||||
formLoading.value = true
|
formLoading.value = true
|
||||||
try {
|
try {
|
||||||
|
// 提交前将浮点/整数值统一转为 string value
|
||||||
|
// TODO @AI:不用转换,直接存储看看;后端自己来转换!
|
||||||
const data = { ...formData.value }
|
const data = { ...formData.value }
|
||||||
|
data.items = data.items.map((item: any) => {
|
||||||
|
const submitItem: any = {
|
||||||
|
id: item.id,
|
||||||
|
indicatorId: item.indicatorId,
|
||||||
|
remark: item.remark
|
||||||
|
}
|
||||||
|
if (item.valueType === MesQcResultValueType.FLOAT) {
|
||||||
|
submitItem.value = item.valueFloat != null ? String(item.valueFloat) : undefined
|
||||||
|
} else if (item.valueType === MesQcResultValueType.INTEGER) {
|
||||||
|
submitItem.value = item.valueInteger != null ? String(item.valueInteger) : undefined
|
||||||
|
} else {
|
||||||
|
submitItem.value = item.value
|
||||||
|
}
|
||||||
|
return submitItem
|
||||||
|
})
|
||||||
if (formType.value === 'create') {
|
if (formType.value === 'create') {
|
||||||
await QcResultApi.createResult(data)
|
await QcIndicatorResultApi.createResult(data)
|
||||||
message.success(t('common.createSuccess'))
|
message.success(t('common.createSuccess'))
|
||||||
} else {
|
} else {
|
||||||
await QcResultApi.updateResult(data)
|
await QcIndicatorResultApi.updateResult(data)
|
||||||
message.success(t('common.updateSuccess'))
|
message.success(t('common.updateSuccess'))
|
||||||
}
|
}
|
||||||
dialogVisible.value = false
|
dialogVisible.value = false
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
<!-- MES 检验结果列表子组件(嵌入 IQC 等质检单详情页) -->
|
<!-- MES 检验结果列表子组件(嵌入 IQC 等质检单详情页) -->
|
||||||
<!-- TODO @AI:这个文件名,可以更全面一点;另外,放到 components 目录下; -->
|
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<!-- 操作按钮 -->
|
<!-- 操作按钮 -->
|
||||||
|
|
@ -32,15 +31,17 @@
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- 新增/修改弹窗 -->
|
<!-- 新增/修改弹窗 -->
|
||||||
<ResultForm ref="formRef" :qc-id="qcId" :qc-type="qcType" @success="getList" />
|
<QcIndicatorResultForm ref="formRef" :qc-id="qcId" :qc-type="qcType" @success="getList" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { QcResultApi, QcResultVO } from '@/api/mes/qc/indicatorresult'
|
import { QcIndicatorResultApi, QcIndicatorResultVO } from '@/api/mes/qc/indicatorresult'
|
||||||
import ResultForm from './ResultForm.vue'
|
import QcIndicatorResultForm from './QcIndicatorResultForm.vue'
|
||||||
|
|
||||||
defineOptions({ name: 'ResultList' })
|
// TODO @AI:补全注释,参考 system user index.vue
|
||||||
|
|
||||||
|
defineOptions({ name: 'QcIndicatorResultList' })
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
qcId: number
|
qcId: number
|
||||||
|
|
@ -51,7 +52,7 @@ const { t } = useI18n()
|
||||||
const message = useMessage()
|
const message = useMessage()
|
||||||
|
|
||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
const list = ref<QcResultVO[]>([])
|
const list = ref<QcIndicatorResultVO[]>([])
|
||||||
const total = ref(0)
|
const total = ref(0)
|
||||||
const queryParams = reactive({
|
const queryParams = reactive({
|
||||||
pageNo: 1,
|
pageNo: 1,
|
||||||
|
|
@ -70,7 +71,7 @@ const getList = async () => {
|
||||||
queryParams.qcType = props.qcType
|
queryParams.qcType = props.qcType
|
||||||
loading.value = true
|
loading.value = true
|
||||||
try {
|
try {
|
||||||
const data = await QcResultApi.getResultPage(queryParams)
|
const data = await QcIndicatorResultApi.getResultPage(queryParams)
|
||||||
list.value = data.list
|
list.value = data.list
|
||||||
total.value = data.total
|
total.value = data.total
|
||||||
} finally {
|
} finally {
|
||||||
|
|
@ -84,15 +85,15 @@ const handleAdd = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 修改 */
|
/** 修改 */
|
||||||
const handleUpdate = (row: QcResultVO) => {
|
const handleUpdate = (row: QcIndicatorResultVO) => {
|
||||||
formRef.value.open('update', row.id)
|
formRef.value.open('update', row.id)
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 删除 */
|
/** 删除 */
|
||||||
const handleDelete = async (row: QcResultVO) => {
|
const handleDelete = async (row: QcIndicatorResultVO) => {
|
||||||
try {
|
try {
|
||||||
await message.delConfirm()
|
await message.delConfirm()
|
||||||
await QcResultApi.deleteResult(row.id)
|
await QcIndicatorResultApi.deleteResult(row.id)
|
||||||
message.success(t('common.delSuccess'))
|
message.success(t('common.delSuccess'))
|
||||||
await getList()
|
await getList()
|
||||||
} catch {}
|
} catch {}
|
||||||
|
|
@ -193,7 +193,7 @@
|
||||||
<IqcLineList :iqc-id="formData.id" />
|
<IqcLineList :iqc-id="formData.id" />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="检测结果" name="result">
|
<el-tab-pane label="检测结果" name="result">
|
||||||
<ResultList :qc-id="formData.id!" :qc-type="MesQcTypeEnum.IQC" />
|
<QcIndicatorResultList :qc-id="formData.id!" :qc-type="MesQcTypeEnum.IQC" />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -214,7 +214,7 @@ import MdItemSelect from '@/views/mes/md/item/components/MdItemSelect.vue'
|
||||||
import UserSelect from '@/views/system/user/components/UserSelect.vue'
|
import UserSelect from '@/views/system/user/components/UserSelect.vue'
|
||||||
import QcTemplateSelect from '@/views/mes/qc/template/components/QcTemplateSelect.vue'
|
import QcTemplateSelect from '@/views/mes/qc/template/components/QcTemplateSelect.vue'
|
||||||
import IqcLineList from './IqcLineList.vue'
|
import IqcLineList from './IqcLineList.vue'
|
||||||
import ResultList from '@/views/mes/qc/indicatorresult/ResultList.vue'
|
import QcIndicatorResultList from '@/views/mes/qc/indicatorresult/components/QcIndicatorResultList.vue'
|
||||||
import { MesQcTypeEnum } from '@/views/mes/utils/constants'
|
import { MesQcTypeEnum } from '@/views/mes/utils/constants'
|
||||||
|
|
||||||
defineOptions({ name: 'IqcForm' })
|
defineOptions({ name: 'IqcForm' })
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
<el-table-column label="检测指标名称" align="center" prop="indicatorName" min-width="150" />
|
<el-table-column label="检测指标名称" align="center" prop="indicatorName" min-width="150" />
|
||||||
<el-table-column label="检测指标类型" align="center" prop="indicatorType" width="120">
|
<el-table-column label="检测指标类型" align="center" prop="indicatorType" width="120">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :type="DICT_TYPE.MES_INDEX_TYPE" :value="scope.row.indicatorType" />
|
<dict-tag :type="DICT_TYPE.MES_INDICATOR_TYPE" :value="scope.row.indicatorType" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="检测工具" align="center" prop="toolName" width="120" />
|
<el-table-column label="检测工具" align="center" prop="toolName" width="120" />
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
<el-table-column label="检测项名称" align="center" prop="indicatorName" min-width="150" />
|
<el-table-column label="检测项名称" align="center" prop="indicatorName" min-width="150" />
|
||||||
<el-table-column label="检测项类型" align="center" prop="indicatorType" width="120">
|
<el-table-column label="检测项类型" align="center" prop="indicatorType" width="120">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :type="DICT_TYPE.MES_INDEX_TYPE" :value="scope.row.indicatorType" />
|
<dict-tag :type="DICT_TYPE.MES_INDICATOR_TYPE" :value="scope.row.indicatorType" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="检测工具" align="center" prop="indicatorTool" width="120" />
|
<el-table-column label="检测工具" align="center" prop="indicatorTool" width="120" />
|
||||||
|
|
|
||||||
|
|
@ -130,6 +130,15 @@ export const MesDvCheckResultEnum = {
|
||||||
ABNORMAL: 2 // 异常
|
ABNORMAL: 2 // 异常
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** MES 质检结果值类型枚举 */
|
||||||
|
export const MesQcResultValueType = {
|
||||||
|
FLOAT: 1, // 浮点
|
||||||
|
INTEGER: 2, // 整数
|
||||||
|
TEXT: 3, // 文本
|
||||||
|
DICT: 4, // 字典
|
||||||
|
FILE: 5 // 文件
|
||||||
|
} as const
|
||||||
|
|
||||||
/** MES 质检类型枚举 */
|
/** MES 质检类型枚举 */
|
||||||
export const MesQcTypeEnum = {
|
export const MesQcTypeEnum = {
|
||||||
IQC: 1, // 来料检验
|
IQC: 1, // 来料检验
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue