diff --git a/core/core-frontend/src/locales/en.ts b/core/core-frontend/src/locales/en.ts index 2625f45c6e..5d502077cd 100644 --- a/core/core-frontend/src/locales/en.ts +++ b/core/core-frontend/src/locales/en.ts @@ -2011,6 +2011,7 @@ Scatter chart (bubble) chart: {a} (series name), {b} (data name), {c} (value arr total: 'Total' }, dataset: { + field_value: 'Field Value', scope_edit: 'Only effective when editing', scope_all: 'Globally effective when previewing datasets', spend_time: 'Time spent', diff --git a/core/core-frontend/src/locales/tw.ts b/core/core-frontend/src/locales/tw.ts index c11f3d3966..2bcce777a1 100644 --- a/core/core-frontend/src/locales/tw.ts +++ b/core/core-frontend/src/locales/tw.ts @@ -1961,6 +1961,7 @@ export default { total: '合計' }, dataset: { + field_value: '欄位值', scope_edit: '僅編輯時生效', scope_all: '資料集預覽時全域生效', spend_time: '耗時', diff --git a/core/core-frontend/src/locales/zh-CN.ts b/core/core-frontend/src/locales/zh-CN.ts index 87aaaf194f..e05f6e4adb 100644 --- a/core/core-frontend/src/locales/zh-CN.ts +++ b/core/core-frontend/src/locales/zh-CN.ts @@ -1963,6 +1963,7 @@ export default { total: '合计' }, dataset: { + field_value: '字段值', scope_edit: '仅编辑时生效', scope_all: '数据集预览时全局生效', spend_time: '耗时', diff --git a/core/core-frontend/src/views/visualized/data/dataset/form/index.vue b/core/core-frontend/src/views/visualized/data/dataset/form/index.vue index bc238f983b..41440e50d9 100644 --- a/core/core-frontend/src/views/visualized/data/dataset/form/index.vue +++ b/core/core-frontend/src/views/visualized/data/dataset/form/index.vue @@ -1015,36 +1015,16 @@ const equalMin = [ ] const validatePass = (_: any, value: any, callback: any) => { - let result = false - value.forEach(ele => { - const { name, text = [], time, min, max } = ele - if (!result) { - switch (currentGroupField.deTypeOrigin) { - case 0: - result = !name || !text.length - break - case 1: - result = !name || !time.length - break - case 2: - case 3: - case 4: - result = !name || min === null || max === null - break - default: - break - } - } - }) - if (result) { + if (!value || !value.length) { callback(new Error(t('chart.value_can_not_empty'))) } else { callback() } } +const refsForm = ref([]) + const fieldGroupRules = { - name: [{ required: true, message: t('dataset.input_edit_name'), trigger: 'blur' }], - groupList: [{ validator: validatePass }] + name: [{ required: true, message: t('dataset.input_edit_name'), trigger: 'blur' }] } const defaultObj = { @@ -1056,7 +1036,6 @@ const defaultObj = { originName: '', otherGroup: '', groupType: 'd', - title: '-', deType: 0, type: 'ANY', deExtractType: 0, @@ -1089,9 +1068,9 @@ const addGroupField = () => { } const handleFieldschange = val => { const field = groupFields.value.find(ele => ele.id === val) - const { deType, name } = field - currentGroupField.title = name + const { deType } = field if (deType !== currentGroupField.deExtractType || deType === 0) { + refsForm.value = [] currentGroupField.groupList = [ { name: '', @@ -1154,35 +1133,50 @@ const initGroupField = val => { const confirmGroupField = () => { ruleGroupFieldRef.value.validate(val => { - if (val) { - const groupList = [] - currentGroupField.groupList.forEach(ele => { - const { name, text = [], time, min, max, minTerm, maxTerm } = ele - const obj = { - name, - text, - min, - max, - minTerm, - maxTerm, - startTime: '', - endTime: '' + let count = 0 + let flag = false + let time + refsForm.value.forEach(ele => { + ele?.validate(val => { + if (val) { + count++ } - if (currentGroupField.deTypeOrigin === 1) { - const [startTime, endTime] = time - obj.startTime = dayjs(startTime).format('YYYY-MM-DD HH:mm:ss') - obj.endTime = dayjs(endTime).format('YYYY-MM-DD HH:mm:ss') - } - groupList.push(obj) }) - const index = allfields.value.findIndex(ele => ele.id === currentGroupField.id) - if (index !== -1) { - allfields.value.splice(index, 1, { ...currentGroupField, groupList }) - } else { - allfields.value.push({ ...currentGroupField, groupList }) + }) + time = setTimeout(() => { + clearTimeout(time) + flag = true + time = null + if (val && count === currentGroupField.groupList.length) { + const groupList = [] + currentGroupField.groupList.forEach(ele => { + const { name, text = [], time, min, max, minTerm, maxTerm } = ele + const obj = { + name, + text, + min, + max, + minTerm, + maxTerm, + startTime: '', + endTime: '' + } + if (currentGroupField.deTypeOrigin === 1) { + const [startTime, endTime] = time + obj.startTime = dayjs(startTime).format('YYYY-MM-DD HH:mm:ss') + obj.endTime = dayjs(endTime).format('YYYY-MM-DD HH:mm:ss') + } + groupList.push(obj) + }) + const index = allfields.value.findIndex(ele => ele.id === currentGroupField.id) + if (index !== -1) { + allfields.value.splice(index, 1, { ...currentGroupField, groupList }) + } else { + allfields.value.push({ ...currentGroupField, groupList }) + } + editGroupField.value = false } - editGroupField.value = false - } + }, 1000) }) } @@ -1202,36 +1196,9 @@ const addGroupFields = () => { }) } -const handleChangeGroupList = () => { - let result = false - currentGroupField.groupList.forEach(ele => { - const { name, text = [], time, min, max } = ele - if (!result) { - switch (currentGroupField.deTypeOrigin) { - case 0: - result = !name || !text.length - break - case 1: - result = !name || !time.length - break - case 2: - case 3: - case 4: - result = !name || min === null || max === null - break - default: - break - } - } - }) - console.log(result, 'result') - if (currentGroupField.name && !result) { - ruleGroupFieldRef.value.validate() - } -} - const removeGroupFields = index => { currentGroupField.groupList.splice(index, 1) + refsForm.value.splice(index, 1) } const dragstart = (e: DragEvent, ele) => { @@ -1577,6 +1544,7 @@ const cascaderChangeArr = val => { }) recoverSelection() } + const filterNode = (value: string, data: BusiTreeNode) => { if (!value) return true return data.name?.toLowerCase().includes(value.toLowerCase()) @@ -2630,7 +2598,8 @@ const getDsIconName = data => { - + +