mirror of
https://github.com/dataease/dataease.git
synced 2026-05-15 21:42:32 +08:00
feat(查询组件): 查询组件下拉树支持自定义选择数据集
This commit is contained in:
committed by
xuwei-fit2cloud
parent
bffea17ac9
commit
26eb45ed96
@@ -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 = ''
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 = []
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user