style:设备台账-编辑-备件/关键件回显调整

test
黄伟杰 2 weeks ago
parent 0b0ab3df48
commit c7ce945f64

@ -568,8 +568,48 @@ watch(
const treeSelectProps = { label: 'name', children: 'children' }
const deviceTypeTree = ref<DeviceTypeTreeVO[]>([])
const users = ref<UserVO[]>([])
const criticalComponentOptions = ref<{ label: string; value: number }[]>([])
const beijianOptions = ref<{ label: string; value: number }[]>([])
type SelectionOption = { label: string; value: number }
const criticalComponentOptions = ref<SelectionOption[]>([])
const beijianOptions = ref<SelectionOption[]>([])
const savedCriticalComponentOptions = ref<SelectionOption[]>([])
const savedBeijianOptions = ref<SelectionOption[]>([])
const buildCriticalComponentOptions = (items: any[] = []): SelectionOption[] =>
(items ?? [])
.map((item: any) => {
const id = normalizeNumberish(item?.id)
if (id === undefined) return undefined
const code = item.code ? String(item.code) : ''
const name = item.name ? String(item.name) : ''
const label = code && name ? `${code}-${name}` : name || code || String(id)
return { label, value: id }
})
.filter((item): item is SelectionOption => Boolean(item))
const buildBeijianOptions = (items: any[] = []): SelectionOption[] =>
(items ?? [])
.map((item: any) => {
const id = normalizeNumberish(item?.id)
if (id === undefined) return undefined
const code = item.barCode ? String(item.barCode) : ''
const name = item.name ? String(item.name) : ''
const label = code && name ? `${code}-${name}` : name || code || String(id)
return { label, value: id }
})
.filter((item): item is SelectionOption => Boolean(item))
const mergeSelectionOptions = (...groups: SelectionOption[][]): SelectionOption[] => {
const optionMap = new Map<number, SelectionOption>()
groups.flat().forEach((item) => optionMap.set(item.value, item))
return Array.from(optionMap.values())
}
const filterValidSelectedIds = (selectedIds: any[], options: SelectionOption[]) => {
const validIds = new Set(options.map((item) => item.value))
return Array.from(
new Set(
(selectedIds ?? [])
.map((id) => normalizeNumberish(id))
.filter((id): id is number => id !== undefined && validIds.has(id))
)
)
}
const criticalComponentTransferData = computed(() =>
criticalComponentOptions.value.map((item) => ({ key: item.value, label: item.label }))
)
@ -591,10 +631,13 @@ const formatSelectedSummary = (ids: number[], options: { label: string; value: n
}
const criticalComponentDisplay = computed(() =>
formatSelectedSummary(formData.value.componentIds ?? [], criticalComponentOptions.value)
formatSelectedSummary(
formData.value.componentIds ?? [],
mergeSelectionOptions(criticalComponentOptions.value, savedCriticalComponentOptions.value)
)
)
const beijianDisplay = computed(() =>
formatSelectedSummary(formData.value.beijianIds ?? [], beijianOptions.value)
formatSelectedSummary(formData.value.beijianIds ?? [], mergeSelectionOptions(beijianOptions.value, savedBeijianOptions.value))
)
const clearCriticalComponent = () => {
@ -607,30 +650,30 @@ const clearBeijian = () => {
const openCriticalComponentDialog = () => {
criticalComponentDraft.value = [...(formData.value.componentIds ?? [])]
criticalComponentDialogVisible.value = true
ids.value = formData.value.componentIds
ids.value = [...(formData.value.componentIds ?? [])]
setDefaultSelections()
}
const openBeijianDialog = () => {
beijianDraft.value = [...(formData.value.beijianIds ?? [])]
beijianDialogVisible.value = true
bjIds.value = formData.value.beijianIds
bjIds.value = [...(formData.value.beijianIds ?? [])]
setBJDefaultSelections()
}
const ids = ref([])
const ids = ref<number[]>([])
const confirmCriticalComponentDialog = () => {
//let ids = selectedRows.value.map(item => item.id);
//const validMap = new Set(criticalComponentOptions.value.map((item) => item.value))
//const selected = Array.from(new Set(criticalComponentDraft.value.map((v) => Number(v)).filter((v) => validMap.has(v))))
formData.value.componentIds = ids.value
formData.value.componentIds = filterValidSelectedIds(ids.value, criticalComponentOptions.value)
criticalComponentDialogVisible.value = false
//multipleTableRef.value.clearSelection()
}
const bjIds = ref([])
const bjIds = ref<number[]>([])
const confirmBeijianDialog = () => {
// let ids = bjSelectedRows.value.map(item => item.id);
/* const validMap = new Set(beijianOptions.value.map((item) => item.value))
const selected = Array.from(new Set(beijianDraft.value.map((v) => Number(v)).filter((v) => validMap.has(v))))*/
formData.value.beijianIds = bjIds.value
formData.value.beijianIds = filterValidSelectedIds(bjIds.value, beijianOptions.value)
beijianDialogVisible.value = false
//multipleTableRef.value.clearSelection()
}
@ -681,18 +724,8 @@ const ensureOptionsLoaded = async () => {
])
deviceTypeTree.value = deviceTypeRes
users.value = userRes ?? []
criticalComponentOptions.value = (criticalRes ?? []).map((item: any) => {
const code = item.code ? String(item.code) : ''
const name = item.name ? String(item.name) : ''
const label = code && name ? `${code}-${name}` : name || code || String(item.id)
return { label, value: Number(item.id) }
})
beijianOptions.value = (beijianRes ?? []).map((item: any) => {
const code = item.barCode ? String(item.barCode) : ''
const name = item.name ? String(item.name) : ''
const label = code && name ? `${code}-${name}` : name || code || String(item.id)
return { label, value: Number(item.id) }
})
criticalComponentOptions.value = buildCriticalComponentOptions(criticalRes ?? [])
beijianOptions.value = buildBeijianOptions(beijianRes ?? [])
}
/** 打开弹窗 */
@ -733,6 +766,8 @@ const open = async (type: string, id?: number, defaultDeviceTypeId?: number, def
beijianIds: parseIdsValue((detail as any)?.beijianId),
qrcodeUrl: (detail as any)?.qrcodeUrl,
}
savedCriticalComponentOptions.value = buildCriticalComponentOptions((detail as any)?.componentList ?? [])
savedBeijianOptions.value = buildBeijianOptions((detail as any)?.beijianList ?? [])
} finally {
formLoading.value = false
}
@ -1061,6 +1096,12 @@ const setBJDefaultSelections = () => {
const resetForm = () => {
fileUploading.value = false
formData.value = initFormData()
savedCriticalComponentOptions.value = []
savedBeijianOptions.value = []
ids.value = []
bjIds.value = []
selectedRows.value = []
bjSelectedRows.value = []
formRef.value?.resetFields()
}
</script>

Loading…
Cancel
Save