feat(查询组件): 查询组件下拉树支持自定义选择数据集

This commit is contained in:
dataeaseShu
2025-03-19 13:37:40 +08:00
committed by xuwei-fit2cloud
parent bffea17ac9
commit 26eb45ed96
5 changed files with 64 additions and 27 deletions

View File

@@ -253,11 +253,13 @@ const releaseSelect = id => {
}
const getKeyList = next => {
let checkedFieldsMapArr = Object.entries(next.checkedFieldsMap)
let checkedFieldsMapArr = Object.entries(next.checkedFieldsMap).filter(ele =>
next.checkedFields.includes(ele[0])
)
if (next.displayType === '9') {
checkedFieldsMapArr = (
next.treeCheckedList?.length
? next.treeCheckedList
? next.treeCheckedList.filter((_, index) => index < next.treeFieldList.length)
: next.treeFieldList.map(() => {
return {
checkedFields: [...next.checkedFields],
@@ -265,13 +267,12 @@ const getKeyList = next => {
}
})
)
.map(item => Object.entries(item.checkedFieldsMap))
.map(item =>
Object.entries(item.checkedFieldsMap).filter(ele => item.checkedFields.includes(ele[0]))
)
.flat()
}
return checkedFieldsMapArr
.filter(ele => next.checkedFields.includes(ele[0]))
.filter(ele => !!ele[1])
.map(ele => ele[0])
return checkedFieldsMapArr.filter(ele => !!ele[1]).map(ele => ele[0])
}
const queryDataForId = id => {
let requiredName = ''

View File

@@ -335,6 +335,7 @@ const handleCheckedFieldsChangeTree = (value: string[]) => {
isIndeterminate.value = checkedCount > 0 && checkedCount < fields.value.length
setSameId()
if (curComponent.value.displayType === '8') return
setTreeDefault()
setType()
}
@@ -482,6 +483,26 @@ const timeTypeChange = () => {
timeDialogShow.value = false
}
const setTreeDefault = () => {
if (curComponent.value.displayType !== '9') return
if (!!curComponent.value.checkedFields.length) {
let tableId = ''
fields.value.forEach(ele => {
if (
curComponent.value.checkedFields.includes(ele.componentId) &&
curComponent.value.checkedFieldsMap[ele.componentId] &&
!tableId
) {
tableId = datasetFieldList.value.find(itx => itx.id === ele.componentId)?.tableId
}
})
if (tableId && !curComponent.value.treeDatasetId) {
curComponent.value.treeDatasetId = tableId
getOptions(curComponent.value.treeDatasetId, curComponent.value)
}
}
}
const numTypeChange = () => {
if (!curComponent.value.checkedFieldsMapArrNum[currentComponentId]) {
curComponent.value.checkedFieldsMapArrNum[currentComponentId] = []
@@ -687,6 +708,7 @@ const setParameters = field => {
if (notChangeType) return
setType()
setTreeDefault()
}
const setType = () => {
@@ -747,6 +769,7 @@ const setTypeChange = () => {
) {
curComponent.value.timeGranularityMultiple = curComponent.value.timeGranularity
}
setTreeDefault()
})
}
@@ -1155,7 +1178,23 @@ const validate = () => {
return true
}
if (
ele.displayType === '0' &&
ele.defaultValueCheck &&
((Array.isArray(ele.defaultValue) && !ele.defaultValue.length) || !ele.defaultValue)
) {
ElMessage.error(t('report.filter.title'))
return true
}
if (ele.displayType === '9') {
if (
ele.defaultValueCheck &&
((Array.isArray(ele.defaultValue) && !ele.defaultValue.length) || !ele.defaultValue)
) {
ElMessage.error(t('report.filter.title'))
return true
}
if (!ele.treeDatasetId) {
ElMessage.error(t('data_set.dataset_cannot_be'))
return true
@@ -1401,10 +1440,6 @@ const validate = () => {
return false
}
if ([1].includes(+ele.displayType)) {
return false
}
if (
ele.displayType !== '9' &&
ele.optionValueSource === 2 &&
@@ -1427,6 +1462,7 @@ const handleBeforeClose = () => {
defaultConfigurationRef.value?.mult()
defaultConfigurationRef.value?.single()
handleDialogClick()
curComponent.value.id = ''
dialogVisible.value = false
}
const emits = defineEmits(['queryData'])
@@ -1765,6 +1801,7 @@ const handleCondition = (item, idx = 0) => {
nextTick(() => {
if (curComponent.value.displayType === '9') {
handleRelationshipChart(idx)
getOptions(curComponent.value.treeDatasetId, curComponent.value)
}
curComponent.value.showError = showError.value
curComponent.value.auto && (document.querySelector('.chart-field').scrollTop = 0)
@@ -3660,7 +3697,7 @@ defineExpose({
.field-tree_name {
margin-left: 8px;
max-width: 100px;
width: 100px;
}
.field-relationship_chart {

View File

@@ -88,14 +88,14 @@ const handleValueChange = () => {
config.value.defaultValue = value
}
const changeFromId = ref(false)
watch(
() => config.value.defaultValue,
val => {
if (config.value.multiple) {
treeValue.value = Array.isArray(val) ? [...val] : val
}
() => config.value.id,
() => {
changeFromId.value = true
init()
nextTick(() => {
multiple.value = config.value.multiple
changeFromId.value = false
})
}
)
@@ -103,13 +103,17 @@ watch(
watch(
() => config.value.treeFieldList,
() => {
if (changeFromId.value) return
treeValue.value = config.value.multiple ? [] : undefined
config.value.defaultValue = config.value.multiple ? [] : undefined
config.value.selectValue = config.value.multiple ? [] : undefined
showOrHide.value = false
getTreeOption()
}
)
const init = () => {
loading.value = true
const { defaultValueCheck, multiple: plus, defaultValue } = config.value
if (defaultValueCheck) {
config.value.selectValue = Array.isArray(defaultValue)
@@ -126,12 +130,6 @@ const init = () => {
getTreeOption()
}
watch(
() => config.value.id,
() => {
init()
}
)
const showOrHide = ref(true)
const queryConditionWidth = inject('com-width', Function, true)
const isConfirmSearch = inject('is-confirm-search', Function, true)
@@ -151,7 +149,7 @@ const showWholePath = ref(false)
watch(
() => config.value.multiple,
val => {
if (!props.isConfig) return
if (!props.isConfig || changeFromId.value) return
showWholePath.value = false
if (val) {
treeValue.value = []

View File

@@ -39,7 +39,7 @@ const cancelClick = () => {
const setCascadeArrBack = () => {
let isError = false
const arr = cloneDeep(treeList.value).map(item => {
if (!item.field) {
if (!item.field?.id) {
isError = true
}
return item.field

View File

@@ -290,7 +290,8 @@ export const searchQuery = (queryComponentList, filter, curComponentId, firstLoa
item.treeCheckedList.forEach((itx, idx) => {
if (
itx.checkedFields.includes(curComponentId) &&
itx.checkedFieldsMap[curComponentId]
itx.checkedFieldsMap[curComponentId] &&
idx < item.treeFieldList.length
) {
relationshipChartIndex.push(idx)
}