diff --git a/core/core-frontend/src/custom-component/v-query/Component.vue b/core/core-frontend/src/custom-component/v-query/Component.vue index 23e3b86535..74c6ce67bb 100644 --- a/core/core-frontend/src/custom-component/v-query/Component.vue +++ b/core/core-frontend/src/custom-component/v-query/Component.vue @@ -13,7 +13,10 @@ import { watch, computed, onMounted, - CSSProperties + onBeforeMount, + CSSProperties, + shallowRef, + provide } from 'vue' import { storeToRefs } from 'pinia' import { useI18n } from '@/hooks/web/useI18n' @@ -156,7 +159,52 @@ const onComponentClick = () => { } const { emitter } = useEmitt() +const unMountSelect = shallowRef([]) +onBeforeMount(() => { + unMountSelect.value = list.value.map(ele => ele.id) +}) +const releaseSelect = id => { + unMountSelect.value = unMountSelect.value.filter(ele => ele !== id) +} + +const queryDataForId = id => { + let requiredName = '' + const emitterList = (element.value.propValue || []) + .filter(ele => ele.id === id) + .reduce((pre, next) => { + if (next.required) { + if (!next.defaultValueCheck) { + requiredName = next.name + } + + if ( + (Array.isArray(next.selectValue) && !next.selectValue.length) || + (next.selectValue !== 0 && !next.selectValue) + ) { + requiredName = next.name + } + } + const keyList = Object.entries(next.checkedFieldsMap) + .filter(ele => next.checkedFields.includes(ele[0])) + .filter(ele => !!ele[1]) + .map(ele => ele[0]) + pre = [...new Set([...keyList, ...pre])] + return pre + }, []) + if (!!requiredName) { + ElMessage.error(`【${requiredName}】查询条件是必填项,请设置选项值后,再进行查询!`) + return + } + if (!emitterList.length) return + emitterList.forEach(ele => { + emitter.emit(`query-data-${ele}`) + }) +} + +provide('unmount-select', unMountSelect) +provide('release-unmount-select', releaseSelect) +provide('query-data-for-id', queryDataForId) onBeforeUnmount(() => { emitter.off(`addQueryCriteria${element.value.id}`) emitter.off(`editQueryCriteria${element.value.id}`) 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 03e5b1a53d..2e12e7e5ed 100644 --- a/core/core-frontend/src/custom-component/v-query/QueryConditionConfiguration.vue +++ b/core/core-frontend/src/custom-component/v-query/QueryConditionConfiguration.vue @@ -675,6 +675,7 @@ const parameterCompletion = () => { timeType: 'fixed', required: false, defaultMapValue: [], + mapValue: [], parametersStart: null, conditionType: 0, conditionValueOperatorF: 'eq', diff --git a/core/core-frontend/src/custom-component/v-query/Select.vue b/core/core-frontend/src/custom-component/v-query/Select.vue index dededc3fcb..7b447292dc 100644 --- a/core/core-frontend/src/custom-component/v-query/Select.vue +++ b/core/core-frontend/src/custom-component/v-query/Select.vue @@ -1,11 +1,23 @@