|
|
|
|
@ -22,9 +22,6 @@
|
|
|
|
|
<el-form-item v-if="showDeviceSelect" :label="t('EquipmentManagement.RepairItems.device')" prop="deviceId">
|
|
|
|
|
<el-select
|
|
|
|
|
v-model="formData.deviceId"
|
|
|
|
|
multiple
|
|
|
|
|
collapse-tags
|
|
|
|
|
collapse-tags-tooltip
|
|
|
|
|
filterable
|
|
|
|
|
remote
|
|
|
|
|
reserve-keyword
|
|
|
|
|
@ -116,7 +113,7 @@ const formData = ref({
|
|
|
|
|
subjectCode: undefined as string | undefined,
|
|
|
|
|
subjectName: undefined as string | undefined,
|
|
|
|
|
deviceType: undefined as number | undefined,
|
|
|
|
|
deviceId: undefined as number | number[] | undefined,
|
|
|
|
|
deviceId: undefined as number | undefined,
|
|
|
|
|
componentId: undefined as number | undefined,
|
|
|
|
|
inspectionMethod: undefined as string | undefined,
|
|
|
|
|
valueType: undefined as string | undefined,
|
|
|
|
|
@ -182,7 +179,7 @@ watch(
|
|
|
|
|
async () => {
|
|
|
|
|
if (isInitializing.value) return
|
|
|
|
|
isSwitchingDeviceType.value = true
|
|
|
|
|
formData.value.deviceId = formData.value.deviceType === 1 ? [] : undefined
|
|
|
|
|
formData.value.deviceId = undefined
|
|
|
|
|
deviceOptions.value = []
|
|
|
|
|
formData.value.componentId = undefined
|
|
|
|
|
componentOptions.value = []
|
|
|
|
|
@ -198,9 +195,8 @@ watch(
|
|
|
|
|
if (formData.value.deviceType !== 2) return
|
|
|
|
|
formData.value.componentId = undefined
|
|
|
|
|
componentOptions.value = []
|
|
|
|
|
const selectedId = typeof deviceId === 'number' ? deviceId : undefined
|
|
|
|
|
if (typeof selectedId !== 'number') return
|
|
|
|
|
await loadComponentOptionsByDeviceId(selectedId)
|
|
|
|
|
if (typeof deviceId !== 'number') return
|
|
|
|
|
await loadComponentOptionsByDeviceId(deviceId)
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
@ -210,16 +206,7 @@ const validateDeviceId = (_: any, value: any, callback: any) => {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
const dt = formData.value.deviceType
|
|
|
|
|
if (dt === 1) {
|
|
|
|
|
const ids = Array.isArray(value) ? value : []
|
|
|
|
|
if (!ids.length) {
|
|
|
|
|
callback(new Error(t('EquipmentManagement.RepairItems.validatorDeviceRequired')))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
callback()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if (dt === 2 && (value === undefined || value === null || value === '')) {
|
|
|
|
|
if ((dt === 1 || dt === 2) && (value === undefined || value === null || value === '')) {
|
|
|
|
|
callback(new Error(t('EquipmentManagement.RepairItems.validatorDeviceRequired')))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
@ -259,24 +246,12 @@ const open = async (type: string, row?: any) => {
|
|
|
|
|
dictReady.value = true
|
|
|
|
|
}
|
|
|
|
|
if (type === 'update' && row) {
|
|
|
|
|
const parseDeviceIds = (input: unknown) => {
|
|
|
|
|
if (input === undefined || input === null || input === '') return []
|
|
|
|
|
if (Array.isArray(input)) return input.map((v) => Number(v)).filter((v) => !Number.isNaN(v))
|
|
|
|
|
if (typeof input === 'number') return [input]
|
|
|
|
|
return String(input)
|
|
|
|
|
.split(',')
|
|
|
|
|
.map((v) => Number(v.trim()))
|
|
|
|
|
.filter((v) => !Number.isNaN(v))
|
|
|
|
|
}
|
|
|
|
|
const deviceIds = parseDeviceIds(row.deviceId)
|
|
|
|
|
formData.value = {
|
|
|
|
|
id: row.id,
|
|
|
|
|
subjectCode: row.subjectCode,
|
|
|
|
|
subjectName: row.subjectName,
|
|
|
|
|
deviceType: row.deviceType !== undefined && row.deviceType !== null ? Number(row.deviceType) : undefined,
|
|
|
|
|
deviceId: (row.deviceType !== undefined && row.deviceType !== null ? Number(row.deviceType) : undefined) === 1
|
|
|
|
|
? deviceIds
|
|
|
|
|
: deviceIds[0],
|
|
|
|
|
deviceId: row.deviceId !== undefined && row.deviceId !== null ? Number(row.deviceId) : undefined,
|
|
|
|
|
componentId: row.componentId !== undefined && row.componentId !== null ? Number(row.componentId) : undefined,
|
|
|
|
|
inspectionMethod: row.inspectionMethod !== undefined && row.inspectionMethod !== null ? String(row.inspectionMethod) : undefined,
|
|
|
|
|
valueType: row.valueType !== undefined && row.valueType !== null ? String(row.valueType) : undefined,
|
|
|
|
|
@ -285,14 +260,7 @@ const open = async (type: string, row?: any) => {
|
|
|
|
|
isEnable: row.isEnable !== undefined && row.isEnable !== null ? String(row.isEnable) : undefined
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (formData.value.deviceType === 1) {
|
|
|
|
|
const ids = Array.isArray(formData.value.deviceId) ? formData.value.deviceId : []
|
|
|
|
|
const nameParts = row.deviceName ? String(row.deviceName).split(/[,,]/).map((v) => v.trim()).filter(Boolean) : []
|
|
|
|
|
ids.forEach((id, idx) => {
|
|
|
|
|
const label = nameParts[idx] ? String(nameParts[idx]) : `ID:${id}`
|
|
|
|
|
deviceOptions.value = upsertOption(deviceOptions.value, { label, value: id })
|
|
|
|
|
})
|
|
|
|
|
} else if (typeof formData.value.deviceId === 'number') {
|
|
|
|
|
if (typeof formData.value.deviceId === 'number') {
|
|
|
|
|
const label = row.deviceName ? String(row.deviceName) : `ID:${formData.value.deviceId}`
|
|
|
|
|
deviceOptions.value = upsertOption(deviceOptions.value, { label, value: formData.value.deviceId })
|
|
|
|
|
}
|
|
|
|
|
@ -316,16 +284,12 @@ const submitForm = async () => {
|
|
|
|
|
await formRef.value.validate()
|
|
|
|
|
formLoading.value = true
|
|
|
|
|
try {
|
|
|
|
|
const buildDeviceIdParam = () => {
|
|
|
|
|
if (Array.isArray(formData.value.deviceId)) return formData.value.deviceId.join(',')
|
|
|
|
|
return formData.value.deviceId
|
|
|
|
|
}
|
|
|
|
|
const data = {
|
|
|
|
|
id: formType.value === 'update' ? formData.value.id : undefined,
|
|
|
|
|
subjectCode: formData.value.subjectCode,
|
|
|
|
|
subjectName: formData.value.subjectName,
|
|
|
|
|
deviceType: formData.value.deviceType,
|
|
|
|
|
deviceId: buildDeviceIdParam(),
|
|
|
|
|
deviceId: formData.value.deviceId,
|
|
|
|
|
componentId: formData.value.componentId,
|
|
|
|
|
inspectionMethod: formData.value.inspectionMethod,
|
|
|
|
|
valueType: formData.value.valueType,
|
|
|
|
|
|