diff --git a/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/entity/SnapshotVisualizationOuterParamsTargetViewInfo.java b/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/entity/SnapshotVisualizationOuterParamsTargetViewInfo.java index 02048d2117..816ad9e7c1 100644 --- a/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/entity/SnapshotVisualizationOuterParamsTargetViewInfo.java +++ b/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/entity/SnapshotVisualizationOuterParamsTargetViewInfo.java @@ -53,6 +53,16 @@ public class SnapshotVisualizationOuterParamsTargetViewInfo implements Serializa */ private String targetDsId; + private String matchMode; + + public String getMatchMode() { + return matchMode; + } + + public void setMatchMode(String matchMode) { + this.matchMode = matchMode; + } + public String getTargetId() { return targetId; } diff --git a/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/entity/VisualizationOuterParamsTargetViewInfo.java b/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/entity/VisualizationOuterParamsTargetViewInfo.java index e36f2ea50f..596ea4976f 100644 --- a/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/entity/VisualizationOuterParamsTargetViewInfo.java +++ b/core/core-backend/src/main/java/io/dataease/visualization/dao/auto/entity/VisualizationOuterParamsTargetViewInfo.java @@ -53,6 +53,16 @@ public class VisualizationOuterParamsTargetViewInfo implements Serializable { */ private String copyId; + private String matchMode; + + public String getMatchMode() { + return matchMode; + } + + public void setMatchMode(String matchMode) { + this.matchMode = matchMode; + } + public String getTargetId() { return targetId; } diff --git a/core/core-backend/src/main/resources/db/migration/V2.10.19__ddl.sql b/core/core-backend/src/main/resources/db/migration/V2.10.19__ddl.sql index ac2de5c660..4e6e188d1b 100644 --- a/core/core-backend/src/main/resources/db/migration/V2.10.19__ddl.sql +++ b/core/core-backend/src/main/resources/db/migration/V2.10.19__ddl.sql @@ -4,3 +4,8 @@ ALTER TABLE `xpack_threshold_info` ALTER TABLE `xpack_threshold_info_snapshot` ADD COLUMN `show_field_value` tinyint(1) NOT NULL DEFAULT 0 COMMENT '显示字段值' AFTER `repeat_send`; +ALTER TABLE `snapshot_visualization_outer_params_target_view_info` + ADD COLUMN `match_mode` varchar(255) NULL DEFAULT 'self' COMMENT '匹配方式' AFTER `target_ds_id`; + +ALTER TABLE `visualization_outer_params_target_view_info` + ADD COLUMN `match_mode` varchar(255) NULL DEFAULT 'self' COMMENT '匹配方式' AFTER `target_ds_id`; diff --git a/core/core-backend/src/main/resources/mybatis/ExtDataVisualizationMapper.xml b/core/core-backend/src/main/resources/mybatis/ExtDataVisualizationMapper.xml index 56d36c3d0c..3f932bc463 100644 --- a/core/core-backend/src/main/resources/mybatis/ExtDataVisualizationMapper.xml +++ b/core/core-backend/src/main/resources/mybatis/ExtDataVisualizationMapper.xml @@ -816,7 +816,8 @@ `target_field_id`, `copy_from`, `copy_id`, - `target_ds_id` + `target_ds_id`, + `match_mode` ) SELECT voptvi.`target_id`, voptvi.`params_info_id`, @@ -824,7 +825,8 @@ voptvi.`target_field_id`, voptvi.`copy_from`, voptvi.`copy_id`, - voptvi.`target_ds_id` + voptvi.`target_ds_id`, + voptvi.`match_mode` FROM visualization_outer_params_target_view_info voptvi LEFT JOIN visualization_outer_params_info vopi ON vopi.params_info_id = voptvi.params_info_id @@ -1181,7 +1183,8 @@ `target_field_id`, `copy_from`, `copy_id`, - `target_ds_id` + `target_ds_id`, + `match_mode` ) SELECT voptvi.`target_id`, voptvi.`params_info_id`, @@ -1189,7 +1192,8 @@ voptvi.`target_field_id`, voptvi.`copy_from`, voptvi.`copy_id`, - voptvi.`target_ds_id` + voptvi.`target_ds_id`, + voptvi.`match_mode` FROM snapshot_visualization_outer_params_target_view_info voptvi LEFT JOIN snapshot_visualization_outer_params_info vopi ON vopi.params_info_id = voptvi.params_info_id diff --git a/core/core-backend/src/main/resources/mybatis/ExtVisualizationOuterParamsMapper.xml b/core/core-backend/src/main/resources/mybatis/ExtVisualizationOuterParamsMapper.xml index 330b4e474e..809a714d62 100644 --- a/core/core-backend/src/main/resources/mybatis/ExtVisualizationOuterParamsMapper.xml +++ b/core/core-backend/src/main/resources/mybatis/ExtVisualizationOuterParamsMapper.xml @@ -46,6 +46,7 @@ + @@ -71,6 +72,7 @@ ifnull( popi.checked, 0 ) AS checked, poptvi.target_view_id, poptvi.target_ds_id, + poptvi.match_mode, poptvi.target_field_id FROM snapshot_visualization_outer_params pop @@ -178,7 +180,7 @@ popi.required AS required, popi.default_value AS default_value, popi.enabled_default AS enabled_default, - CONCAT( poptvi.target_view_id, '#', poptvi.target_field_id ) AS targetInfo + CONCAT( poptvi.target_view_id, '#', poptvi.target_field_id, '#', poptvi.match_mode ) AS targetInfo FROM visualization_outer_params pop LEFT JOIN visualization_outer_params_info popi ON pop.params_id = popi.params_id diff --git a/core/core-frontend/src/components/visualization/OuterParamsSet.vue b/core/core-frontend/src/components/visualization/OuterParamsSet.vue index 8367ed8d2a..5b0eed8590 100644 --- a/core/core-frontend/src/components/visualization/OuterParamsSet.vue +++ b/core/core-frontend/src/components/visualization/OuterParamsSet.vue @@ -89,7 +89,8 @@ -
{{ t('visualization.filter_component') }}
+
{{ t('visualization.filter_component') }}
+
{{ t('visualization.outer_params_type') }}
{{ t('visualization.connection_condition') }}
@@ -101,12 +102,31 @@ :key="index" >
-
+
{{ findFilterName(baseFilter.id) }}
+
+ + + + + +
{ const paramsCheckedAdaptor = (outerParamsInfo, newBaseFilterInfo, newBaseDatasetInfo) => { const dsFieldIdSelected = {} + const dsFilterMatchMode = {} const viewMatchIds = [] outerParamsInfo.targetViewInfoList.forEach(targetViewInfo => { viewMatchIds.push(targetViewInfo.targetViewId) + dsFilterMatchMode[targetViewInfo.targetDsId] = targetViewInfo.matchMode || 'self' dsFieldIdSelected[targetViewInfo.targetDsId] = targetViewInfo.targetFieldId === 'empty' ? targetViewInfo.targetViewId @@ -601,6 +623,7 @@ const paramsCheckedAdaptor = (outerParamsInfo, newBaseFilterInfo, newBaseDataset if (newBaseFilterInfo) { newBaseFilterInfo.forEach(filterInfo => { filterInfo['filterSelected'] = dsFieldIdSelected[filterInfo.id] + filterInfo['matchMode'] = dsFilterMatchMode[filterInfo.id] || 'self' }) } outerParamsInfo['filterInfo'] = newBaseFilterInfo @@ -642,6 +665,7 @@ const save = () => { outerParamsInfo.targetViewInfoList.push({ targetViewId: baseFilterInfo.filterSelected, targetDsId: baseFilterInfo.id, + matchMode: baseFilterInfo.matchMode, targetFieldId: 'empty' }) } 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 47f7b94816..cc76c92f82 100644 --- a/core/core-frontend/src/custom-component/v-query/Select.vue +++ b/core/core-frontend/src/custom-component/v-query/Select.vue @@ -58,6 +58,7 @@ interface SelectConfig { label: string value: string }[] + optionFilter: [] } const { t } = useI18n() @@ -76,7 +77,8 @@ const props = defineProps({ defaultValueCheck: false, optionValueSource: 0, multiple: false, - checkedFieldsMap: {} + checkedFieldsMap: {}, + optionFilter: [] } } }, @@ -271,7 +273,16 @@ const handleFieldIdDefaultChange = (val: string[]) => { }) .then(res => { options.value = (res || []) - .filter(ele => ele !== null) + .filter(ele => { + return ( + ele !== null && + ((config.value.optionFilter && + config.value.optionFilter.length > 0 && + config.value.optionFilter.includes(ele)) || + !config.value.optionFilter || + config.value.optionFilter.length === 0) + ) + }) .map(ele => { return { label: `${ele}`, diff --git a/core/core-frontend/src/locales/en.ts b/core/core-frontend/src/locales/en.ts index 996713e87e..d1a0137392 100644 --- a/core/core-frontend/src/locales/en.ts +++ b/core/core-frontend/src/locales/en.ts @@ -2945,6 +2945,9 @@ export default { column_name: 'Field name' }, visualization: { + outer_params_type: 'Type', + outer_params_type_self: 'Assignment', + outer_params_type_filter: 'Filter', number_formatter: 'Number Content Format', jump_dialog_background: 'Dialog Background Color', jump_dialog_button: 'Dialog Font Color', diff --git a/core/core-frontend/src/locales/tw.ts b/core/core-frontend/src/locales/tw.ts index 09117f3bc7..0ba0f9747a 100644 --- a/core/core-frontend/src/locales/tw.ts +++ b/core/core-frontend/src/locales/tw.ts @@ -2864,6 +2864,9 @@ export default { column_name: '欄位名稱' }, visualization: { + outer_params_type: '類型', + outer_params_type_self: '賦值', + outer_params_type_filter: '過濾', number_formatter: '數字內容格式', jump_dialog_background: '彈框背景色', jump_dialog_button: '彈框字體色', diff --git a/core/core-frontend/src/locales/zh-CN.ts b/core/core-frontend/src/locales/zh-CN.ts index ad47b41bfd..6c6192039b 100644 --- a/core/core-frontend/src/locales/zh-CN.ts +++ b/core/core-frontend/src/locales/zh-CN.ts @@ -2870,6 +2870,9 @@ export default { column_name: '字段名称' }, visualization: { + outer_params_type: '类型', + outer_params_type_self: '赋值', + outer_params_type_filter: '过滤', number_formatter: '数字内容格式', jump_dialog_background: '弹框背景色', jump_dialog_button: '弹框字体色', diff --git a/core/core-frontend/src/store/modules/data-visualization/dvMain.ts b/core/core-frontend/src/store/modules/data-visualization/dvMain.ts index d0587e1625..71a2873b76 100644 --- a/core/core-frontend/src/store/modules/data-visualization/dvMain.ts +++ b/core/core-frontend/src/store/modules/data-visualization/dvMain.ts @@ -1265,72 +1265,78 @@ export const dvMainStore = defineStore('dataVisualization', { element.propValue?.forEach(filterItem => { if (filterItem.id === targetViewId) { let queryParams = paramValue - if (!['1', '7'].includes(filterItem.displayType)) { - // 查询组件除了时间组件 其他入参只支持文本 这里全部转为文本 - queryParams = paramValue.map(number => String(number)) - } - filterItem.defaultMapValue = [] - filterItem.mapValue = [] - filterItem.defaultValueCheck = true - filterItem.defaultValueFirstItem = false - filterItem.timeType = 'fixed' - if (['0', '2'].includes(filterItem.displayType)) { - const { optionValueSource, field, displayId } = filterItem - const queryMapFlag = optionValueSource === 1 && field.id !== displayId - let queryMapParams = queryParams - if (queryMapFlag) { - queryParams = filterEnumParamsReduce(queryParams, field.id) - queryMapParams = filterEnumParams(queryParams, field.id) + const targetMatchMode = targetInfoArray[2] // 目标匹配模式 + if (targetMatchMode === 'filter') { + // do filter + filterItem['optionFilter'] = queryParams + } else { + if (!['1', '7'].includes(filterItem.displayType)) { + // 查询组件除了时间组件 其他入参只支持文本 这里全部转为文本 + queryParams = paramValue.map(number => String(number)) } - // 0 文本类型 1 数字类型 - if (filterItem.multiple) { - // multiple === true 多选 - filterItem['selectValue'] = queryParams - filterItem['defaultValue'] = queryParams - } else { - // 单选 + filterItem.defaultMapValue = [] + filterItem.mapValue = [] + filterItem.defaultValueCheck = true + filterItem.defaultValueFirstItem = false + filterItem.timeType = 'fixed' + if (['0', '2'].includes(filterItem.displayType)) { + const { optionValueSource, field, displayId } = filterItem + const queryMapFlag = optionValueSource === 1 && field.id !== displayId + let queryMapParams = queryParams + if (queryMapFlag) { + queryParams = filterEnumParamsReduce(queryParams, field.id) + queryMapParams = filterEnumParams(queryParams, field.id) + } + // 0 文本类型 1 数字类型 + if (filterItem.multiple) { + // multiple === true 多选 + filterItem['selectValue'] = queryParams + filterItem['defaultValue'] = queryParams + } else { + // 单选 + filterItem['selectValue'] = queryParams[0] + filterItem['defaultValue'] = queryParams[0] + } + filterItem['defaultMapValue'] = queryMapParams + filterItem['mapValue'] = queryMapParams + } else if (filterItem.displayType === '1') { + // 1 时间类型 filterItem['selectValue'] = queryParams[0] filterItem['defaultValue'] = queryParams[0] - } - filterItem['defaultMapValue'] = queryMapParams - filterItem['mapValue'] = queryMapParams - } else if (filterItem.displayType === '1') { - // 1 时间类型 - filterItem['selectValue'] = queryParams[0] - filterItem['defaultValue'] = queryParams[0] - } else if (filterItem.displayType === '7') { - // 7 时间范围类型 - filterItem['selectValue'] = queryParams - filterItem['defaultValue'] = queryParams - } else if (filterItem.displayType === '8') { - // 8 文本搜索 - filterItem['conditionValueF'] = parmaValueSource + '' - filterItem['defaultConditionValueF'] = parmaValueSource + '' - } else if (filterItem.displayType === '9') { - // 9 下拉树 - if (filterItem.multiple) { - // multiple === true 多选 + } else if (filterItem.displayType === '7') { + // 7 时间范围类型 filterItem['selectValue'] = queryParams filterItem['defaultValue'] = queryParams - } else { - // 单选 - filterItem['selectValue'] = queryParams[0] - filterItem['defaultValue'] = queryParams[0] + } else if (filterItem.displayType === '8') { + // 8 文本搜索 + filterItem['conditionValueF'] = parmaValueSource + '' + filterItem['defaultConditionValueF'] = parmaValueSource + '' + } else if (filterItem.displayType === '9') { + // 9 下拉树 + if (filterItem.multiple) { + // multiple === true 多选 + filterItem['selectValue'] = queryParams + filterItem['defaultValue'] = queryParams + } else { + // 单选 + filterItem['selectValue'] = queryParams[0] + filterItem['defaultValue'] = queryParams[0] + } + } else if (filterItem.displayType === '22') { + filterItem['defaultNumValueStart'] = queryParams[0] + filterItem['defaultNumValueEnd'] = queryParams[1] + filterItem['numValueStart'] = queryParams[0] + filterItem['numValueEnd'] = queryParams[1] + } + if ('DE_EMPTY' === paramValueStr) { + filterItem['selectValue'] = null + filterItem['defaultValue'] = null + filterItem['conditionValueF'] = null + filterItem['defaultConditionValueF'] = null + } + if (filterItem['defaultValue']) { + defaultValueMap[filterItem.id] = filterItem['defaultValue'] } - } else if (filterItem.displayType === '22') { - filterItem['defaultNumValueStart'] = queryParams[0] - filterItem['defaultNumValueEnd'] = queryParams[1] - filterItem['numValueStart'] = queryParams[0] - filterItem['numValueEnd'] = queryParams[1] - } - if ('DE_EMPTY' === paramValueStr) { - filterItem['selectValue'] = null - filterItem['defaultValue'] = null - filterItem['conditionValueF'] = null - filterItem['defaultConditionValueF'] = null - } - if (filterItem['defaultValue']) { - defaultValueMap[filterItem.id] = filterItem['defaultValue'] } } }) diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/visualization/vo/VisualizationOuterParamsTargetViewInfoVO.java b/sdk/api/api-base/src/main/java/io/dataease/api/visualization/vo/VisualizationOuterParamsTargetViewInfoVO.java index 314365a542..04ff879fb9 100644 --- a/sdk/api/api-base/src/main/java/io/dataease/api/visualization/vo/VisualizationOuterParamsTargetViewInfoVO.java +++ b/sdk/api/api-base/src/main/java/io/dataease/api/visualization/vo/VisualizationOuterParamsTargetViewInfoVO.java @@ -51,4 +51,7 @@ public class VisualizationOuterParamsTargetViewInfoVO implements Serializable { * 复制来源ID */ private String copyId; + + + private String matchMode; }