From 1883ee92b216c2eb0bc35ab07477e30f9adbe016 Mon Sep 17 00:00:00 2001 From: dataeaseShu Date: Tue, 18 Jun 2024 14:15:16 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=9F=A5=E8=AF=A2=E7=BB=84=E4=BB=B6):=20?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E7=BB=84=E4=BB=B6=E7=BA=A7=E8=81=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/core-frontend/src/api/dataset.ts | 6 +++ .../custom-component/v-query/QueryCascade.vue | 43 +++++++++++++++---- .../v-query/QueryConditionConfiguration.vue | 14 +++++- 3 files changed, 53 insertions(+), 10 deletions(-) diff --git a/core/core-frontend/src/api/dataset.ts b/core/core-frontend/src/api/dataset.ts index 3232268a1a..f4467f00d4 100644 --- a/core/core-frontend/src/api/dataset.ts +++ b/core/core-frontend/src/api/dataset.ts @@ -286,3 +286,9 @@ export const exportDeletePost = async (data): Promise => { return res?.data }) } + +export const listByDsIds = async (data): Promise => { + return request.post({ url: 'datasetField/listByDsIds', data }).then(res => { + return res?.data + }) +} diff --git a/core/core-frontend/src/custom-component/v-query/QueryCascade.vue b/core/core-frontend/src/custom-component/v-query/QueryCascade.vue index a8d3c58d62..b866d14e5a 100644 --- a/core/core-frontend/src/custom-component/v-query/QueryCascade.vue +++ b/core/core-frontend/src/custom-component/v-query/QueryCascade.vue @@ -2,7 +2,15 @@ import { ref, shallowRef } from 'vue' import { useI18n } from '@/hooks/web/useI18n' import { guid } from '@/views/visualized/data/dataset/form/util.js' +import { listByDsIds } from '@/api/dataset' +interface Cascade { + datasetId: string + name: string + queryId: string + deType: string +} +type cascadeMap = Record const { t } = useI18n() const dialogVisible = ref(false) @@ -20,8 +28,24 @@ const confirmClick = () => { handleBeforeClose() } -const init = () => { - dialogVisible.value = true +const init = (cascadeMap: cascadeMap) => { + datasetMap.value = Object.values(cascadeMap).map(ele => ({ + label: ele.name, + value: `${ele.datasetId}--${ele.queryId}` + })) + listByDsIds(datasetMap.value.map(ele => ele.value.split('--')[0])) + .then(res => { + for (let i in res || {}) { + res[i] = res[i].filter( + ele => ele.deType === Object.values(cascadeMap).find(ele => ele.datasetId === i).deType + ) + } + console.log('res', res) + optionsMap.value = res + }) + .finally(() => { + dialogVisible.value = true + }) } const disabledDatasetId = shallowRef([]) @@ -161,11 +185,14 @@ defineExpose({
第{{ indexCascade[idx + 1] }}级
- +
diff --git a/core/core-frontend/src/custom-component/v-query/QueryConditionConfiguration.vue b/core/core-frontend/src/custom-component/v-query/QueryConditionConfiguration.vue index 534b1bf621..a9dc7c1909 100644 --- a/core/core-frontend/src/custom-component/v-query/QueryConditionConfiguration.vue +++ b/core/core-frontend/src/custom-component/v-query/QueryConditionConfiguration.vue @@ -448,7 +448,18 @@ const isInRange = (ele, startWindowTime, timeStamp) => { const CascadeDialog = defineAsyncComponent(() => import('./QueryCascade.vue')) const cascadeDialog = ref() const openCascadeDialog = () => { - cascadeDialog.value.init() + const cascadeMap = conditions.value + .filter(ele => [0, 2, 5].includes(+ele.displayType)) + .reduce((pre, next) => { + pre[next.id] = { + datasetId: next.dataset.id, + name: next.name, + queryId: next.id, + deType: next.field.deType + } + return pre + }, {}) + cascadeDialog.value.init(cascadeMap) } const validateConditionType = ({ @@ -682,7 +693,6 @@ const confirmValueSource = () => { ElMessage.error('手工输入-选项值不能为空') return } - console.log(cloneDeep(valueSource.value), 'valueSource') curComponent.value.valueSource = cloneDeep( valueSource.value.filter(ele => {