45 lines
1.2 KiB
Java
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: ''
|
|
})
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|