diff --git a/packages/ui/src/renderer/src/features/JobSourceDragOrderer/index.vue b/packages/ui/src/renderer/src/features/JobSourceDragOrderer/index.vue index 7050831..abd1ac4 100644 --- a/packages/ui/src/renderer/src/features/JobSourceDragOrderer/index.vue +++ b/packages/ui/src/renderer/src/features/JobSourceDragOrderer/index.vue @@ -70,25 +70,7 @@
- - - + {{ getSearchSourceTipText(element) }} { if (!searchItem.keyword?.trim()) { Message.info({ - message: '关键词为空,请输入要搜索的关键词', + message: '该条关键词为空,请输入要搜索的关键词', grouping: true }) } else if (!element.enabled) { @@ -190,7 +172,7 @@ import { computed, ref } from 'vue' import draggable from 'vuedraggable' import { ElMessage as Message } from 'element-plus' -defineProps({ +const props = defineProps({ modelValue: { type: Array } @@ -223,6 +205,42 @@ function addSearchKeyword(item) { function removeSearchKeywordByIndex(item, index) { item.children?.splice(index, 1) } +const searchKeywordCountMap = computed(() => { + const target = props.modelValue?.find((it) => it.type === 'search' && it.enabled) + if (!target || !target?.children?.length) { + return {} + } + const map = {} + target.children?.forEach((it) => { + if (!it.keyword) { + return + } + if (!map[it.keyword]) { + map[it.keyword] = 0 + } + map[it.keyword]++ + }) + + return map +}) + +const getSearchSourceTipText = (element) => { + if (!element?.children?.length) { + return `添加一个关键词后方可启用->` + } + const seg: string[] = [] + if (element.enabled) { + if (element.children?.every((it) => !(it.enabled && !!it.keyword?.trim()))) { + seg.push(`启用下方任一非空项后方可启用`) + } else if (element.children?.some((it) => it.enabled && !it.keyword?.trim())) { + seg.push(`空项会被跳过`) + } + if (Object.values(searchKeywordCountMap.value).some((n) => n > 1)) { + seg.push(`重复项仅取第一个启用的项`) + } + } + return seg.join(';') +}