gis-bi/core/core-frontend/src/utils/componentUtils.ts
2025-06-23 18:26:06 +08:00

45 lines
1.2 KiB
Java

import { EnumValue, enumValueObj } from '@/api/dataset'
let filterEnumMap = {}
const findFilterEnum = async (val: EnumValue) => {
const queryId = val.queryId
const displayId = val.displayId
const arr = await enumValueObj({ queryId: queryId, displayId: displayId, searchText: '' })
return arr?.reduce((acc, item) => {
acc[item[displayId]] = item[queryId]
return acc
}, {})
}
export const filterEnumParams = (queryParams, fieldId: string) => {
const resultMap = filterEnumMap[fieldId]
if (resultMap) {
const resultParams = []
queryParams.forEach(param => {
resultParams.push(resultMap[param] || param)
})
return resultParams
} else {
return queryParams
}
}
export const filterEnumMapSync = async componentData => {
filterEnumMap = {}
for (const element of componentData) {
if (element.component === 'VQuery') {
for (const filterItem of element.propValue) {
const { optionValueSource, field, displayId } = filterItem
if (optionValueSource === 1 && field.id) {
filterEnumMap[field.id] = await findFilterEnum({
queryId: field.id,
displayId,
searchText: ''
})
}
}
}
}
}