|
|
|
|
@ -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>
|
|
|
|
|
|