Merge pull request #11281 from dataease/pr@dev-v2_st

fix(查询组件): 过滤组件更新过滤条件级联中过滤条件没有置空或变更
This commit is contained in:
dataeaseShu 2024-07-31 10:32:05 +08:00 committed by GitHub
commit 788bbbfadc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -19,7 +19,7 @@ import { getThisStart, getLastStart, getAround } from './time-format-dayjs'
import { snapshotStoreWithOut } from '@/store/modules/data-visualization/snapshot' import { snapshotStoreWithOut } from '@/store/modules/data-visualization/snapshot'
import { useI18n } from '@/hooks/web/useI18n' import { useI18n } from '@/hooks/web/useI18n'
import { fieldType } from '@/utils/attr' import { fieldType } from '@/utils/attr'
import { ElMessage, ElSelect } from 'element-plus-secondary' import { ElMessage, ElSelect, ElMessageBox } from 'element-plus-secondary'
import type { DatasetDetail } from '@/api/dataset' import type { DatasetDetail } from '@/api/dataset'
import { getDsDetailsWithPerm, getSqlParams, listFieldsWithPermissions } from '@/api/dataset' import { getDsDetailsWithPerm, getSqlParams, listFieldsWithPermissions } from '@/api/dataset'
import EmptyBackground from '@/components/empty-background/src/EmptyBackground.vue' import EmptyBackground from '@/components/empty-background/src/EmptyBackground.vue'
@ -156,7 +156,6 @@ const datasetTree = shallowRef([])
const fields = ref<DatasetDetail[]>() const fields = ref<DatasetDetail[]>()
const { queryElement } = toRefs(props) const { queryElement } = toRefs(props)
const getDetype = (id, arr) => { const getDetype = (id, arr) => {
return arr.flat().find(ele => ele.id === id)?.deType return arr.flat().find(ele => ele.id === id)?.deType
} }
@ -419,8 +418,39 @@ const computedTree = computed(() => {
} }
return dfs(datasetTree.value) return dfs(datasetTree.value)
}) })
let newDatasetId = ''
let oldDatasetId = ''
const handleCurrentChange = node => {
oldDatasetId = curComponent.value.dataset?.id
newDatasetId = node.id
}
const confirmIdChange = () => {
curComponent.value.dataset.id = newDatasetId
clearCascadeArrDataset(`${oldDatasetId}--${curComponent.value.id}`)
newDatasetId = ''
oldDatasetId = ''
handleDatasetChange()
}
const handleDatasetChange = () => { const handleDatasetChange = () => {
if (!!newDatasetId && !!oldDatasetId) {
curComponent.value.dataset.id = oldDatasetId
ElMessageBox.confirm(
'数据集的修改,会导致级联配置失效,因此对应的级联关系将被清除,确定修改吗?',
{
confirmButtonType: 'primary',
type: 'warning',
confirmButtonText: '确定',
cancelButtonText: '取消',
autofocus: false,
showClose: false
}
).then(() => {
confirmIdChange()
})
return
}
curComponent.value.field.id = '' curComponent.value.field.id = ''
curComponent.value.displayId = '' curComponent.value.displayId = ''
curComponent.value.sortId = '' curComponent.value.sortId = ''
@ -580,6 +610,18 @@ const openCascadeDialog = () => {
cascadeDialog.value.init(cascadeMap, cascadeArr) cascadeDialog.value.init(cascadeMap, cascadeArr)
} }
const clearCascadeArrDataset = id => {
for (let i in cascadeArr) {
const [fir, sec] = cascadeArr[i]
if (fir?.datasetId.includes(id)) {
cascadeArr[i] = []
} else if (sec?.datasetId.includes(id)) {
cascadeArr[i] = [fir]
}
}
cascadeArr = cascadeArr.filter(ele => !!ele.length)
}
const indexCascade = ' 一二三四五' const indexCascade = ' 一二三四五'
const validateConditionType = ({ const validateConditionType = ({
@ -1639,6 +1681,7 @@ defineExpose({
:data="computedTree" :data="computedTree"
placeholder="请选择数据集" placeholder="请选择数据集"
@change="handleDatasetChange" @change="handleDatasetChange"
@current-change="handleCurrentChange"
:props="dsSelectProps" :props="dsSelectProps"
placement="bottom" placement="bottom"
:render-after-expand="false" :render-after-expand="false"