UPDATE: 1、测试项改成检测项;
2、检测项勾选闪变添加提示;
3、检测项由误差体系反推为下拉框让用户多选,默认全选;
4、修改检测计划有子计划后部分字段不可编辑;
This commit is contained in:
@@ -41,17 +41,18 @@
|
|||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item v-if="selectByMode" :label-width="110" label="测试项" prop="testItems">
|
<el-form-item v-if="selectByMode" :label-width="110" label="检测项" prop="testItems">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="formContent.testItems"
|
v-model="formContent.testItems"
|
||||||
:disabled="planType != 0 || allDisabled"
|
:disabled="planType != 0 || allDisabled || !canEdited"
|
||||||
:max-collapse-tags="1"
|
:max-collapse-tags="1"
|
||||||
clearable
|
clearable
|
||||||
collapse-tags
|
collapse-tags
|
||||||
collapse-tags-tooltip
|
collapse-tags-tooltip
|
||||||
filterable
|
filterable
|
||||||
multiple
|
multiple
|
||||||
placeholder="请选择测试项"
|
placeholder="请选择检测项"
|
||||||
|
@blur="handleTestItemChange"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="(option, index) in secondLevelOptions"
|
v-for="(option, index) in secondLevelOptions"
|
||||||
@@ -122,7 +123,7 @@
|
|||||||
<el-form-item :label-width="110" label="误差体系" prop="errorSysId">
|
<el-form-item :label-width="110" label="误差体系" prop="errorSysId">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="formContent.errorSysId"
|
v-model="formContent.errorSysId"
|
||||||
:disabled="isSelectDisabled || allDisabled"
|
:disabled="isSelectDisabled || allDisabled || !canEdited"
|
||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
clearable
|
clearable
|
||||||
filterable
|
filterable
|
||||||
@@ -140,7 +141,7 @@
|
|||||||
<el-form-item :label-width="110" label="数据处理原则" prop="dataRule">
|
<el-form-item :label-width="110" label="数据处理原则" prop="dataRule">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="formContent.dataRule"
|
v-model="formContent.dataRule"
|
||||||
:disabled="isSelectDisabled || allDisabled"
|
:disabled="isSelectDisabled || allDisabled || !canEdited"
|
||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
clearable
|
clearable
|
||||||
placeholder="请选择数据处理原则"
|
placeholder="请选择数据处理原则"
|
||||||
@@ -154,7 +155,10 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label-width="110" label="守时检测" prop="timeCheck">
|
<el-form-item :label-width="110" label="守时检测" prop="timeCheck">
|
||||||
<el-radio-group v-model="formContent.timeCheck" :disabled="planType != 0 || allDisabled">
|
<el-radio-group
|
||||||
|
v-model="formContent.timeCheck"
|
||||||
|
:disabled="planType != 0 || allDisabled || !canEdited"
|
||||||
|
>
|
||||||
<el-radio :value="1">是</el-radio>
|
<el-radio :value="1">是</el-radio>
|
||||||
<el-radio :value="0">否</el-radio>
|
<el-radio :value="0">否</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
@@ -173,7 +177,7 @@
|
|||||||
>
|
>
|
||||||
<el-select
|
<el-select
|
||||||
v-model="formContent.reportTemplateName"
|
v-model="formContent.reportTemplateName"
|
||||||
:disabled="planType != 0 || allDisabled"
|
:disabled="planType != 0 || allDisabled || !canEdited"
|
||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
placeholder="请选择报告模版"
|
placeholder="请选择报告模版"
|
||||||
>
|
>
|
||||||
@@ -188,7 +192,7 @@
|
|||||||
<el-form-item v-if="selectByMode" :label-width="110" label="项目负责人" prop="leader">
|
<el-form-item v-if="selectByMode" :label-width="110" label="项目负责人" prop="leader">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="formContent.leader"
|
v-model="formContent.leader"
|
||||||
:disabled="planType != 0 || allDisabled"
|
:disabled="planType != 0 || allDisabled || !canEdited"
|
||||||
clearable
|
clearable
|
||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
placeholder="请选择项目负责人"
|
placeholder="请选择项目负责人"
|
||||||
@@ -278,7 +282,7 @@
|
|||||||
prop="testConfig.maxTime"
|
prop="testConfig.maxTime"
|
||||||
>
|
>
|
||||||
<el-input-number
|
<el-input-number
|
||||||
:disabled="isSelectDisabled || allDisabled"
|
:disabled="isSelectDisabled || allDisabled || !canEdited"
|
||||||
style="width: 240px"
|
style="width: 240px"
|
||||||
v-model="formContent.testConfig!.maxTime"
|
v-model="formContent.testConfig!.maxTime"
|
||||||
:precision="0"
|
:precision="0"
|
||||||
@@ -296,7 +300,7 @@
|
|||||||
prop="testConfig.waveRecord"
|
prop="testConfig.waveRecord"
|
||||||
>
|
>
|
||||||
<el-input-number
|
<el-input-number
|
||||||
:disabled="isSelectDisabled || allDisabled"
|
:disabled="isSelectDisabled || allDisabled || !canEdited"
|
||||||
style="width: 240px"
|
style="width: 240px"
|
||||||
v-model="formContent.testConfig!.waveRecord"
|
v-model="formContent.testConfig!.waveRecord"
|
||||||
:precision="0"
|
:precision="0"
|
||||||
@@ -314,7 +318,7 @@
|
|||||||
prop="testConfig.realTime"
|
prop="testConfig.realTime"
|
||||||
>
|
>
|
||||||
<el-input-number
|
<el-input-number
|
||||||
:disabled="isSelectDisabled || allDisabled"
|
:disabled="isSelectDisabled || allDisabled || !canEdited"
|
||||||
style="width: 240px"
|
style="width: 240px"
|
||||||
v-model="formContent.testConfig!.realTime"
|
v-model="formContent.testConfig!.realTime"
|
||||||
:precision="0"
|
:precision="0"
|
||||||
@@ -332,7 +336,7 @@
|
|||||||
prop="testConfig.statistics"
|
prop="testConfig.statistics"
|
||||||
>
|
>
|
||||||
<el-input-number
|
<el-input-number
|
||||||
:disabled="isSelectDisabled || allDisabled"
|
:disabled="isSelectDisabled || allDisabled || !canEdited"
|
||||||
style="width: 240px"
|
style="width: 240px"
|
||||||
v-model="formContent.testConfig!.statistics"
|
v-model="formContent.testConfig!.statistics"
|
||||||
:precision="0"
|
:precision="0"
|
||||||
@@ -350,7 +354,7 @@
|
|||||||
prop="testConfig.flicker"
|
prop="testConfig.flicker"
|
||||||
>
|
>
|
||||||
<el-input-number
|
<el-input-number
|
||||||
:disabled="isSelectDisabled || allDisabled"
|
:disabled="isSelectDisabled || allDisabled || !canEdited"
|
||||||
style="width: 240px"
|
style="width: 240px"
|
||||||
v-model="formContent.testConfig!.flicker"
|
v-model="formContent.testConfig!.flicker"
|
||||||
:precision="0"
|
:precision="0"
|
||||||
@@ -434,6 +438,7 @@ const unboundPqDevList = ref<Device.ResPqDev[]>([]) //指定模式下所有未
|
|||||||
const boundPqDevList = ref<Device.ResPqDev[]>([]) //根据检测计划id查询出所有已绑定的设备
|
const boundPqDevList = ref<Device.ResPqDev[]>([]) //根据检测计划id查询出所有已绑定的设备
|
||||||
const devData = ref<any[]>([])
|
const devData = ref<any[]>([])
|
||||||
const isSelectDisabled = ref(false)
|
const isSelectDisabled = ref(false)
|
||||||
|
const canEdited = ref(true)
|
||||||
const planType = ref<number>(0)
|
const planType = ref<number>(0)
|
||||||
const subPlanBindStandardDev = ref<any>([]) //哪些标准设备已经被子计划绑定
|
const subPlanBindStandardDev = ref<any>([]) //哪些标准设备已经被子计划绑定
|
||||||
const activeNames = ref(['1'])
|
const activeNames = ref(['1'])
|
||||||
@@ -611,7 +616,7 @@ const baseRules: Record<string, Array<FormItemRule>> = {
|
|||||||
errorSysId: [{ required: true, message: '误差体系必选!', trigger: 'change' }],
|
errorSysId: [{ required: true, message: '误差体系必选!', trigger: 'change' }],
|
||||||
dataRule: [{ required: true, message: '数据处理原则必选!', trigger: 'change' }],
|
dataRule: [{ required: true, message: '数据处理原则必选!', trigger: 'change' }],
|
||||||
standardDevIds: [{ required: true, message: '标准设备必选!', trigger: 'change' }],
|
standardDevIds: [{ required: true, message: '标准设备必选!', trigger: 'change' }],
|
||||||
testItems: [{ required: true, message: '测试项必选!', trigger: 'change' }],
|
testItems: [{ required: true, message: '检测项必选!', trigger: 'change' }],
|
||||||
'testConfig.maxTime': [{ required: true, message: '检测最大次数必填!', trigger: 'blur' }],
|
'testConfig.maxTime': [{ required: true, message: '检测最大次数必填!', trigger: 'blur' }],
|
||||||
'testConfig.waveRecord': [{ required: true, message: '录波数据有效组数必填!', trigger: 'blur' }],
|
'testConfig.waveRecord': [{ required: true, message: '录波数据有效组数必填!', trigger: 'blur' }],
|
||||||
'testConfig.realTime': [{ required: true, message: '实时数据有效组数必填!', trigger: 'blur' }],
|
'testConfig.realTime': [{ required: true, message: '实时数据有效组数必填!', trigger: 'blur' }],
|
||||||
@@ -721,6 +726,7 @@ const save = () => {
|
|||||||
|
|
||||||
// 打开弹窗,可能是新增,也可能是编辑
|
// 打开弹窗,可能是新增,也可能是编辑
|
||||||
const open = async (sign: string, data: Plan.ReqPlan, currentMode: string, plan: number) => {
|
const open = async (sign: string, data: Plan.ReqPlan, currentMode: string, plan: number) => {
|
||||||
|
canEdited.value = true
|
||||||
unboundPqDevList.value = []
|
unboundPqDevList.value = []
|
||||||
boundPqDevList.value = []
|
boundPqDevList.value = []
|
||||||
//处理异步调用
|
//处理异步调用
|
||||||
@@ -834,6 +840,9 @@ const open = async (sign: string, data: Plan.ReqPlan, currentMode: string, plan:
|
|||||||
user_Result: any
|
user_Result: any
|
||||||
|
|
||||||
if (mode.value === '比对式') {
|
if (mode.value === '比对式') {
|
||||||
|
if (data.children && data.children.length > 0) {
|
||||||
|
canEdited.value = false
|
||||||
|
}
|
||||||
if (data.importFlag === 1 || (data.testState !== 0 && plan === 0)) {
|
if (data.importFlag === 1 || (data.testState !== 0 && plan === 0)) {
|
||||||
allDisabled.value = true
|
allDisabled.value = true
|
||||||
formContent.leader = data.leader
|
formContent.leader = data.leader
|
||||||
@@ -932,6 +941,14 @@ const open = async (sign: string, data: Plan.ReqPlan, currentMode: string, plan:
|
|||||||
if (planType.value === 0) {
|
if (planType.value === 0) {
|
||||||
unboundPqDevList.value = unboundData as Device.ResPqDev[]
|
unboundPqDevList.value = unboundData as Device.ResPqDev[]
|
||||||
boundPqDevList.value = boundData as Device.ResPqDev[]
|
boundPqDevList.value = boundData as Device.ResPqDev[]
|
||||||
|
if (data.children && data.children.length > 0) {
|
||||||
|
// 子计划已选成员不可移除
|
||||||
|
const childrenMembers = [...new Set(data.children.map((item: any) => item.members))]
|
||||||
|
memberData.value = user_Result.data.map((user: any) => ({
|
||||||
|
...user,
|
||||||
|
disabled: childrenMembers.includes(user.id) || formContent.leader === user.id
|
||||||
|
}))
|
||||||
|
}
|
||||||
} else if (planType.value === 1) {
|
} else if (planType.value === 1) {
|
||||||
unboundPqDevList.value = boundData.filter((i: any) => !i.boundPlanName) as Device.ResPqDev[]
|
unboundPqDevList.value = boundData.filter((i: any) => !i.boundPlanName) as Device.ResPqDev[]
|
||||||
memberData.value = user_Result.data
|
memberData.value = user_Result.data
|
||||||
@@ -955,11 +972,14 @@ const open = async (sign: string, data: Plan.ReqPlan, currentMode: string, plan:
|
|||||||
|
|
||||||
pqToArray() //将对象转为数组
|
pqToArray() //将对象转为数组
|
||||||
|
|
||||||
//比对式测试项下拉框
|
//比对式检测项下拉框
|
||||||
if (mode.value == '比对式') {
|
if (mode.value == '比对式') {
|
||||||
// 如果是编辑模式且已有误差体系ID,则加载对应的测试项
|
// 如果是编辑模式且已有误差体系ID,则加载对应的检测项
|
||||||
if (formContent.errorSysId) {
|
if (formContent.errorSysId) {
|
||||||
await loadTestItemsForErrorSys(formContent.errorSysId)
|
await loadTestItemsForErrorSys(formContent.errorSysId)
|
||||||
|
if (data.testItems) {
|
||||||
|
formContent.testItems = data.testItems
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -994,11 +1014,19 @@ const open = async (sign: string, data: Plan.ReqPlan, currentMode: string, plan:
|
|||||||
dialogVisible.value = true
|
dialogVisible.value = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 检测项选择变化时的处理函数
|
||||||
|
const handleTestItemChange = () => {
|
||||||
|
if (formContent.testItems.length > 0) {
|
||||||
|
const hasShanBian = secondLevelOptions
|
||||||
|
.filter(option => formContent.testItems.includes(option.value))
|
||||||
|
.find(option => option.label === '闪变')
|
||||||
|
if (hasShanBian) {
|
||||||
|
ElMessage.warning('闪变耗时较长,不推荐批量被检设备在检测过程中采集该指标')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
// 误差体系选择变化时的处理函数
|
// 误差体系选择变化时的处理函数
|
||||||
const handleErrorSysChange = async (value: string) => {
|
const handleErrorSysChange = async (value: string) => {
|
||||||
// 清空测试项选择
|
|
||||||
formContent.testItems = []
|
|
||||||
|
|
||||||
// 如果是比对式模式且选择了误差体系
|
// 如果是比对式模式且选择了误差体系
|
||||||
if (mode.value === '比对式' && value) {
|
if (mode.value === '比对式' && value) {
|
||||||
try {
|
try {
|
||||||
@@ -1015,18 +1043,21 @@ const handleErrorSysChange = async (value: string) => {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
formContent.testItems = secondLevelOptions.map(option => option.value)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('获取测试项失败:', error)
|
formContent.testItems = []
|
||||||
|
console.error('获取检测项失败:', error)
|
||||||
// 发生错误时清空选项
|
// 发生错误时清空选项
|
||||||
secondLevelOptions.length = 0
|
secondLevelOptions.length = 0
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// 如果没有选择误差体系,清空测试项选项
|
formContent.testItems = []
|
||||||
|
// 如果没有选择误差体系,清空检测项选项
|
||||||
secondLevelOptions.length = 0
|
secondLevelOptions.length = 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 根据误差体系ID加载测试项(用于初始化)
|
// 根据误差体系ID加载检测项(用于初始化)
|
||||||
const loadTestItemsForErrorSys = async (errorSysId: string) => {
|
const loadTestItemsForErrorSys = async (errorSysId: string) => {
|
||||||
if (!errorSysId) return
|
if (!errorSysId) return
|
||||||
|
|
||||||
@@ -1043,9 +1074,10 @@ const loadTestItemsForErrorSys = async (errorSysId: string) => {
|
|||||||
label: (res.data as Record<string, string>)[key]
|
label: (res.data as Record<string, string>)[key]
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
formContent.testItems = secondLevelOptions.map(option => option.value)
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('获取测试项失败:', error)
|
console.error('获取检测项失败:', error)
|
||||||
secondLevelOptions.length = 0
|
secondLevelOptions.length = 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,9 +27,9 @@
|
|||||||
>
|
>
|
||||||
导出
|
导出
|
||||||
</el-button>
|
</el-button>
|
||||||
<!-- <el-button type='primary' v-auth.plan="'combine'" :icon='ScaleToOriginal' :disabled='!(scope.selectedList.length > 1)' @click='combineClick'>
|
<el-button type="primary" v-auth.plan="'add'" :icon="CirclePlus" @click="openDialog('add')">
|
||||||
合并
|
新增
|
||||||
</el-button> -->
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
type="primary"
|
type="primary"
|
||||||
v-auth.plan="'import_subplan'"
|
v-auth.plan="'import_subplan'"
|
||||||
@@ -39,9 +39,6 @@
|
|||||||
>
|
>
|
||||||
导入检测计划
|
导入检测计划
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button type="primary" v-auth.plan="'add'" :icon="CirclePlus" @click="openDialog('add')">
|
|
||||||
新增
|
|
||||||
</el-button>
|
|
||||||
<el-button
|
<el-button
|
||||||
type="primary"
|
type="primary"
|
||||||
v-auth.plan="'analysis'"
|
v-auth.plan="'analysis'"
|
||||||
@@ -467,7 +464,7 @@ const columns = reactive<ColumnProps<Plan.ReqPlan>[]>([
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'testItemNameStr',
|
prop: 'testItemNameStr',
|
||||||
label: '测试项',
|
label: '检测项',
|
||||||
minWidth: 300,
|
minWidth: 300,
|
||||||
isShow: modeStore.currentMode == '比对式'
|
isShow: modeStore.currentMode == '比对式'
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user