|
|
|
@ -1,67 +1,101 @@
|
|
|
|
<template>
|
|
|
|
<template>
|
|
|
|
<Dialog :title="dialogTitle" v-model="dialogVisible">
|
|
|
|
<Dialog :title="dialogTitle" v-model="dialogVisible">
|
|
|
|
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="100px" v-loading="formLoading">
|
|
|
|
<el-form
|
|
|
|
<el-form-item label="名称" prop="name">
|
|
|
|
ref="formRef"
|
|
|
|
<el-input v-model="formData.name" placeholder="请输入名称" />
|
|
|
|
:model="formData"
|
|
|
|
|
|
|
|
:rules="formRules"
|
|
|
|
|
|
|
|
label-width="120px"
|
|
|
|
|
|
|
|
v-loading="formLoading"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<el-form-item :label="t('QualityManagement.ZjSchema.name')" prop="name">
|
|
|
|
|
|
|
|
<el-input
|
|
|
|
|
|
|
|
v-model="formData.name"
|
|
|
|
|
|
|
|
:placeholder="t('QualityManagement.ZjSchema.placeholderName')"
|
|
|
|
|
|
|
|
/>
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="类型" prop="type">
|
|
|
|
<el-form-item :label="t('QualityManagement.ZjSchema.type')" prop="type">
|
|
|
|
<el-radio-group v-model="formData.type">
|
|
|
|
<el-radio-group v-model="formData.type">
|
|
|
|
<el-radio v-for="dict in getDictOptions('mes_zj_schema_type')" :key="dict.value" :label="dict.value">
|
|
|
|
<el-radio v-for="dict in getDictOptions('mes_zj_schema_type')" :key="dict.value" :label="dict.value">
|
|
|
|
{{ dict.label }}
|
|
|
|
{{ dict.label }}
|
|
|
|
</el-radio>
|
|
|
|
</el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
</el-radio-group>
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item v-if="isSampleType" label="抽检方式" prop="sampleMethod">
|
|
|
|
<el-form-item v-if="isSampleType" :label="t('QualityManagement.ZjSchema.sampleMethod')" prop="sampleMethod">
|
|
|
|
<el-radio-group v-model="formData.sampleMethod">
|
|
|
|
<el-radio-group v-model="formData.sampleMethod">
|
|
|
|
<el-radio v-for="dict in getDictOptions('mes_zj_schema_sample_method')" :key="dict.value" :label="dict.value">
|
|
|
|
<el-radio v-for="dict in getDictOptions('mes_zj_schema_sample_method')" :key="dict.value" :label="dict.value">
|
|
|
|
{{ dict.label }}
|
|
|
|
{{ dict.label }}
|
|
|
|
</el-radio>
|
|
|
|
</el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
</el-radio-group>
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item v-if="isSampleType" label="值" prop="val">
|
|
|
|
<el-form-item v-if="isSampleType" :label="t('QualityManagement.ZjSchema.val')" prop="val">
|
|
|
|
<template v-if="isRateMethod">
|
|
|
|
<template v-if="isRateMethod">
|
|
|
|
<el-input-number v-model="rateVal" :min="0" class="!w-160px" />
|
|
|
|
<el-input-number v-model="rateVal" :min="0" class="!w-160px" />
|
|
|
|
<span class="ml-8px">%</span>
|
|
|
|
<span class="ml-8px">%</span>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
<template v-else-if="isGapMethod">
|
|
|
|
<template v-else-if="isGapMethod">
|
|
|
|
<span>每间隔</span>
|
|
|
|
<span>{{ t('QualityManagement.ZjSchema.val') }}</span>
|
|
|
|
<el-input-number v-model="gapInterval" :min="1" class="!w-120px mx-8px" :controls="false" />
|
|
|
|
<el-input-number v-model="gapInterval" :min="1" class="!w-120px mx-8px" :controls="false" />
|
|
|
|
<span>抽取</span>
|
|
|
|
<span>{{ t('QualityManagement.ZjSchema.val') }}</span>
|
|
|
|
<el-input-number v-model="gapCount" :min="1" class="!w-120px ml-8px" :controls="false" />
|
|
|
|
<el-input-number v-model="gapCount" :min="1" class="!w-120px ml-8px" :controls="false" />
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
<template v-else>
|
|
|
|
<template v-else>
|
|
|
|
<el-input v-model="formData.val" placeholder="请输入值" />
|
|
|
|
<el-input
|
|
|
|
|
|
|
|
v-model="formData.val"
|
|
|
|
|
|
|
|
:placeholder="t('QualityManagement.ZjSchema.placeholderVal')"
|
|
|
|
|
|
|
|
/>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="关联项目" prop="item">
|
|
|
|
<el-form-item :label="t('QualityManagement.ZjSchema.item')" prop="item">
|
|
|
|
<el-row :gutter="8" class="w-full">
|
|
|
|
<el-row :gutter="8" class="w-full">
|
|
|
|
<el-col :span="22">
|
|
|
|
<el-col :span="22">
|
|
|
|
<el-input :model-value="displayItemNames" placeholder="请选择检验项目" readonly />
|
|
|
|
<el-input
|
|
|
|
|
|
|
|
:model-value="displayItemNames"
|
|
|
|
|
|
|
|
:placeholder="t('QualityManagement.ZjSchema.placeholderItem')"
|
|
|
|
|
|
|
|
readonly
|
|
|
|
|
|
|
|
/>
|
|
|
|
</el-col>
|
|
|
|
</el-col>
|
|
|
|
<el-col :span="2" class="text-right">
|
|
|
|
<el-col :span="2" class="text-right">
|
|
|
|
<el-button type="primary" @click="openItemDialog">选择</el-button>
|
|
|
|
<el-button type="primary" @click="openItemDialog">
|
|
|
|
|
|
|
|
{{ t('action.select') }}
|
|
|
|
|
|
|
|
</el-button>
|
|
|
|
</el-col>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
</el-row>
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="备注" prop="remark">
|
|
|
|
<el-form-item :label="t('QualityManagement.ZjSchema.remark')" prop="remark">
|
|
|
|
<el-input v-model="formData.remark" placeholder="请输入备注" />
|
|
|
|
<el-input
|
|
|
|
|
|
|
|
v-model="formData.remark"
|
|
|
|
|
|
|
|
:placeholder="t('QualityManagement.ZjSchema.placeholderRemark')"
|
|
|
|
|
|
|
|
/>
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
</el-form>
|
|
|
|
</el-form>
|
|
|
|
<template #footer>
|
|
|
|
<template #footer>
|
|
|
|
<el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
|
|
|
|
<el-button @click="submitForm" type="primary" :disabled="formLoading">
|
|
|
|
<el-button @click="dialogVisible = false">取 消</el-button>
|
|
|
|
{{ t('common.ok') }}
|
|
|
|
|
|
|
|
</el-button>
|
|
|
|
|
|
|
|
<el-button @click="dialogVisible = false">
|
|
|
|
|
|
|
|
{{ t('common.cancel') }}
|
|
|
|
|
|
|
|
</el-button>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
</Dialog>
|
|
|
|
</Dialog>
|
|
|
|
<el-dialog v-model="itemDialogVisible" title="选择检验项目" width="920px" draggable>
|
|
|
|
<el-dialog
|
|
|
|
|
|
|
|
v-model="itemDialogVisible"
|
|
|
|
|
|
|
|
:title="t('QualityManagement.ZjSchema.selectItemDialogTitle')"
|
|
|
|
|
|
|
|
width="920px"
|
|
|
|
|
|
|
|
draggable
|
|
|
|
|
|
|
|
>
|
|
|
|
<div v-loading="itemLoading">
|
|
|
|
<div v-loading="itemLoading">
|
|
|
|
<div class="formula-config-picklist">
|
|
|
|
<div class="formula-config-picklist">
|
|
|
|
<div class="formula-config-panel">
|
|
|
|
<div class="formula-config-panel">
|
|
|
|
<div class="formula-config-panel__header">
|
|
|
|
<div class="formula-config-panel__header">
|
|
|
|
<div>来源</div>
|
|
|
|
<div>{{ t('QualityManagement.ZjSchema.source') }}</div>
|
|
|
|
<div class="formula-config-panel__meta">{{ filteredSourceItems.length }}</div>
|
|
|
|
<div class="formula-config-panel__meta">{{ filteredSourceItems.length }}</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="formula-config-panel__filter">
|
|
|
|
<div class="formula-config-panel__filter">
|
|
|
|
<el-input v-model="sourceKeyword" placeholder="筛选" clearable />
|
|
|
|
<el-input
|
|
|
|
|
|
|
|
v-model="sourceKeyword"
|
|
|
|
|
|
|
|
:placeholder="t('QualityManagement.ZjSchema.filterPlaceholder')"
|
|
|
|
|
|
|
|
clearable
|
|
|
|
|
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<el-table
|
|
|
|
<el-table
|
|
|
|
class="formula-config-panel__table"
|
|
|
|
class="formula-config-panel__table"
|
|
|
|
@ -71,8 +105,8 @@
|
|
|
|
@selection-change="handleSourceSelectionChange"
|
|
|
|
@selection-change="handleSourceSelectionChange"
|
|
|
|
>
|
|
|
|
>
|
|
|
|
<el-table-column type="selection" width="44" />
|
|
|
|
<el-table-column type="selection" width="44" />
|
|
|
|
<el-table-column label="名称" prop="name" />
|
|
|
|
<el-table-column :label="t('QualityManagement.ZjItem.name')" prop="name" />
|
|
|
|
<el-table-column label="检验类型">
|
|
|
|
<el-table-column :label="t('QualityManagement.ZjItem.zjType')">
|
|
|
|
<template #default="scope">
|
|
|
|
<template #default="scope">
|
|
|
|
{{ scope.row.zjTypeName }}
|
|
|
|
{{ scope.row.zjTypeName }}
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
@ -91,11 +125,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
<div class="formula-config-panel">
|
|
|
|
<div class="formula-config-panel">
|
|
|
|
<div class="formula-config-panel__header">
|
|
|
|
<div class="formula-config-panel__header">
|
|
|
|
<div>目标</div>
|
|
|
|
<div>{{ t('QualityManagement.ZjSchema.target') }}</div>
|
|
|
|
<div class="formula-config-panel__meta">{{ filteredTargetItems.length }}</div>
|
|
|
|
<div class="formula-config-panel__meta">{{ filteredTargetItems.length }}</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="formula-config-panel__filter">
|
|
|
|
<div class="formula-config-panel__filter">
|
|
|
|
<el-input v-model="targetKeyword" placeholder="筛选" clearable />
|
|
|
|
<el-input
|
|
|
|
|
|
|
|
v-model="targetKeyword"
|
|
|
|
|
|
|
|
:placeholder="t('QualityManagement.ZjSchema.filterPlaceholder')"
|
|
|
|
|
|
|
|
clearable
|
|
|
|
|
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<el-table
|
|
|
|
<el-table
|
|
|
|
class="formula-config-panel__table"
|
|
|
|
class="formula-config-panel__table"
|
|
|
|
@ -105,8 +143,8 @@
|
|
|
|
@selection-change="handleTargetSelectionChange"
|
|
|
|
@selection-change="handleTargetSelectionChange"
|
|
|
|
>
|
|
|
|
>
|
|
|
|
<el-table-column type="selection" width="44" />
|
|
|
|
<el-table-column type="selection" width="44" />
|
|
|
|
<el-table-column label="名称" prop="name" />
|
|
|
|
<el-table-column :label="t('QualityManagement.ZjItem.name')" prop="name" />
|
|
|
|
<el-table-column label="检验类型">
|
|
|
|
<el-table-column :label="t('QualityManagement.ZjItem.zjType')">
|
|
|
|
<template #default="scope">
|
|
|
|
<template #default="scope">
|
|
|
|
{{ scope.row.zjTypeName }}
|
|
|
|
{{ scope.row.zjTypeName }}
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
@ -116,8 +154,12 @@
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<template #footer>
|
|
|
|
<template #footer>
|
|
|
|
<el-button @click="itemDialogVisible = false">取 消</el-button>
|
|
|
|
<el-button @click="itemDialogVisible = false">
|
|
|
|
<el-button type="primary" @click="confirmSelectItems">确 定</el-button>
|
|
|
|
{{ t('common.cancel') }}
|
|
|
|
|
|
|
|
</el-button>
|
|
|
|
|
|
|
|
<el-button type="primary" @click="confirmSelectItems">
|
|
|
|
|
|
|
|
{{ t('common.ok') }}
|
|
|
|
|
|
|
|
</el-button>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
</el-dialog>
|
|
|
|
</el-dialog>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
@ -156,9 +198,11 @@ const targetKeyword = ref('')
|
|
|
|
const sourceCheckedKeys = ref<number[]>([])
|
|
|
|
const sourceCheckedKeys = ref<number[]>([])
|
|
|
|
const targetCheckedKeys = ref<number[]>([])
|
|
|
|
const targetCheckedKeys = ref<number[]>([])
|
|
|
|
const formRules = reactive({
|
|
|
|
const formRules = reactive({
|
|
|
|
name: [{ required: true, message: '名称不能为空', trigger: 'blur' }],
|
|
|
|
name: [{ required: true, message: t('QualityManagement.ZjSchema.validatorNameRequired'), trigger: 'blur' }],
|
|
|
|
type: [{ required: true, message: '类型不能为空', trigger: 'change' }],
|
|
|
|
type: [{ required: true, message: t('QualityManagement.ZjSchema.validatorTypeRequired'), trigger: 'change' }],
|
|
|
|
sampleMethod: [{ required: true, message: '抽检方式不能为空', trigger: 'change' }],
|
|
|
|
sampleMethod: [
|
|
|
|
|
|
|
|
{ required: true, message: t('QualityManagement.ZjSchema.validatorSampleMethodRequired'), trigger: 'change' },
|
|
|
|
|
|
|
|
],
|
|
|
|
val: [{ validator: (_: any, __: any, callback: any) => validateVal(callback), trigger: 'blur' }],
|
|
|
|
val: [{ validator: (_: any, __: any, callback: any) => validateVal(callback), trigger: 'blur' }],
|
|
|
|
})
|
|
|
|
})
|
|
|
|
const formRef = ref() // 表单 Ref
|
|
|
|
const formRef = ref() // 表单 Ref
|
|
|
|
@ -221,20 +265,20 @@ const validateVal = (callback: any) => {
|
|
|
|
callback()
|
|
|
|
callback()
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (isRateMethod.value) {
|
|
|
|
if (isRateMethod.value) {
|
|
|
|
if (rateVal.value === undefined || rateVal.value === null) {
|
|
|
|
if (rateVal.value === undefined || rateVal.value === null) {
|
|
|
|
callback(new Error('值不能为空'))
|
|
|
|
callback(new Error(t('QualityManagement.ZjSchema.validatorValRequired')))
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else if (isGapMethod.value) {
|
|
|
|
} else if (isGapMethod.value) {
|
|
|
|
if (!gapInterval.value || !gapCount.value) {
|
|
|
|
if (!gapInterval.value || !gapCount.value) {
|
|
|
|
callback(new Error('值不能为空'))
|
|
|
|
callback(new Error(t('QualityManagement.ZjSchema.validatorValRequired')))
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} else if (!formData.value.val) {
|
|
|
|
|
|
|
|
callback(new Error(t('QualityManagement.ZjSchema.validatorValRequired')))
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else if (!formData.value.val) {
|
|
|
|
|
|
|
|
callback(new Error('值不能为空'))
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
callback()
|
|
|
|
callback()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|