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 b3e55b3445..ea82f4316f 100644 --- a/core/core-frontend/src/custom-component/v-query/Component.vue +++ b/core/core-frontend/src/custom-component/v-query/Component.vue @@ -537,6 +537,7 @@ const boxWidth = computed(() => { const queryData = () => { let requiredName = '' + let numName = '' const emitterList = (element.value.propValue || []).reduce((pre, next) => { if (next.required) { if (!next.defaultValueCheck) { @@ -569,6 +570,13 @@ const queryData = () => { } if (next.displayType === '22') { + if ( + !isNaN(next.numValueEnd) && + !isNaN(next.numValueStart) && + next.numValueEnd < next.numValueStart + ) { + numName = next.name + } if ( [next.numValueEnd, next.numValueStart].filter(itx => ![null, undefined, ''].includes(itx)) .length === 1 @@ -587,6 +595,11 @@ const queryData = () => { ElMessage.error(`【${requiredName}】${t('v_query.before_querying')}`) return } + + if (!!numName) { + ElMessage.error(`【${numName}】数值区间最大值必须大于最小值`) + return + } if (!emitterList.length) return dvMainStore.setFirstLoadMap([...new Set([...emitterList, ...firstLoadMap.value])]) emitterList.forEach(ele => { diff --git a/core/core-frontend/src/custom-component/v-query/ConditionDefaultConfiguration.vue b/core/core-frontend/src/custom-component/v-query/ConditionDefaultConfiguration.vue index efa4fffcf1..9a9fc4966e 100644 --- a/core/core-frontend/src/custom-component/v-query/ConditionDefaultConfiguration.vue +++ b/core/core-frontend/src/custom-component/v-query/ConditionDefaultConfiguration.vue @@ -69,7 +69,7 @@ const relativeToCurrentTypeList = computed(() => { } return [ { - label: t('chart.chart'), + label: t('dynamic_time.year'), value: 'year' }, { diff --git a/core/core-frontend/src/custom-component/v-query/NumberInput.vue b/core/core-frontend/src/custom-component/v-query/NumberInput.vue index b103b6a9f7..ec155c9490 100644 --- a/core/core-frontend/src/custom-component/v-query/NumberInput.vue +++ b/core/core-frontend/src/custom-component/v-query/NumberInput.vue @@ -2,6 +2,7 @@ import { toRefs, onBeforeMount, type PropType, type Ref, inject, computed, nextTick } from 'vue' interface SelectConfig { id: string + defaultValueCheck: boolean defaultNumValueEnd: number numValueEnd: number numValueStart: number @@ -26,7 +27,8 @@ const props = defineProps({ defaultNumValueEnd: '', defaultNumValueStart: '', numValueEnd: '', - numValueStart: '' + numValueStart: '', + defaultValueCheck: false } } }, @@ -38,6 +40,7 @@ const props = defineProps({ const { config } = toRefs(props) const setParams = () => { + if (!config.value.defaultValueCheck) return const { defaultNumValueEnd, defaultNumValueStart } = config.value config.value.numValueEnd = defaultNumValueEnd config.value.numValueStart = defaultNumValueStart 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 8bd7f55f38..8f14c3a169 100644 --- a/core/core-frontend/src/custom-component/v-query/QueryConditionConfiguration.vue +++ b/core/core-frontend/src/custom-component/v-query/QueryConditionConfiguration.vue @@ -1153,6 +1153,24 @@ const validate = () => { ElMessage.error(t('v_query.be_linked_first')) return true } + + if (ele.displayType === '22' && ele.defaultValueCheck) { + if ( + (ele.defaultNumValueEnd !== 0 && !ele.defaultNumValueEnd) || + (ele.defaultNumValueStart !== 0 && !ele.defaultNumValueStart) + ) { + ElMessage.error(t('v_query.cannot_be_empty_de')) + return true + } + if ( + !isNaN(ele.defaultNumValueEnd) && + !isNaN(ele.defaultNumValueStart) && + ele.defaultNumValueEnd < ele.defaultNumValueStart + ) { + ElMessage.error('数值区间最大值必须大于最小值') + return true + } + } let displayTypeField = null let errorTips = t('v_query.cannot_be_performed') let hasParameterTimeArrType = 0 @@ -2983,7 +3001,7 @@ defineExpose({ {{ t('v_query.single_condition') }} {{ - t('v_query.single_condition') + t('v_query.with_condition') }} {{ t('v_query.or_condition')