fix(数据集): 已有新建计算字段的数据集进行关联,字段全选后,刷新数据会报错 #11263

This commit is contained in:
dataeaseShu 2024-08-07 17:04:40 +08:00
parent be7a9e74b9
commit d75cb483b9
2 changed files with 75 additions and 69 deletions

View File

@ -363,34 +363,32 @@ const confirmEditUnion = () => {
}, []) }, [])
if (!!idArr.length) { if (!!idArr.length) {
ElMessageBox.confirm( ElMessageBox.confirm('字段选择', {
`${t('data_set.field')}${allfields.value confirmButtonText: t('dataset.confirm'),
cancelButtonText: t('common.cancel'),
showCancelButton: true,
tip: `${t('data_set.field')}: ${allfields.value
.filter(ele => [...new Set(idArr)].includes(ele.id) && ele.extField !== 2) .filter(ele => [...new Set(idArr)].includes(ele.id) && ele.extField !== 2)
.map(ele => ele.name) .map(ele => ele.name)
.join(',')}${t('data_set.want_to_continue')}`, .join(',')}, 未被勾选, 与其相关的计算字段将被删除确认删除`,
{ confirmButtonType: 'danger',
confirmButtonText: t('dataset.confirm'), type: 'warning',
cancelButtonText: t('common.cancel'), autofocus: false,
showCancelButton: true, showClose: false,
confirmButtonType: 'danger', callback: (action: Action) => {
type: 'warning', if (action === 'confirm') {
autofocus: false, delUpdateDsFields(currentNode.value.id, state.nodeList)
showClose: false, const [fir] = state.nodeList
callback: (action: Action) => { if (fir.isShadow) {
if (action === 'confirm') { delete fir.isShadow
delUpdateDsFields(currentNode.value.id, state.nodeList)
const [fir] = state.nodeList
if (fir.isShadow) {
delete fir.isShadow
}
closeEditUnion()
nextTick(() => {
emits('updateAllfields')
})
} }
closeEditUnion()
nextTick(() => {
emits('updateAllfields')
})
} }
} }
) })
return return
} }
} }
@ -449,32 +447,26 @@ const handleCommand = (ele, command) => {
return pre return pre
}, []) }, [])
fakeDelId = [] fakeDelId = []
if (!!idArr.length) { if (!!idArr.length) {
ElMessageBox.confirm( ElMessageBox.confirm(`确定要删除 ${ele.tableName}`, {
`${t('field.want_to_continue')}${allfields.value confirmButtonText: t('dataset.confirm'),
.filter(ele => [...new Set(idArr)].includes(ele.id) && ele.extField !== 2) cancelButtonText: t('common.cancel'),
.map(ele => ele.name) showCancelButton: true,
.join(',')}${t('data_set.want_to_continue')}`, tip: '删除后被关联的表或sql片段将被删除与其相关的计算字段也将被删除。',
{ confirmButtonType: 'danger',
confirmButtonText: t('dataset.confirm'), type: 'warning',
cancelButtonText: t('common.cancel'), autofocus: false,
showCancelButton: true, showClose: false,
confirmButtonType: 'danger', callback: (action: Action) => {
type: 'warning', if (action === 'confirm') {
autofocus: false, delNode(ele.id, state.nodeList)
showClose: false, nextTick(() => {
callback: (action: Action) => { emits('addComplete')
if (action === 'confirm') { emits('updateAllfields')
delNode(ele.id, state.nodeList) })
nextTick(() => {
emits('addComplete')
emits('updateAllfields')
})
}
} }
} }
) })
return return
} }
} }
@ -531,6 +523,10 @@ const dfsNodeFieldBack = (list, { originName, datasetTableId }) => {
}) })
} }
const dfsNodeFieldBackReal = ele => {
dfsNodeFieldBack(state.nodeList, ele)
}
const menuList = [ const menuList = [
{ {
svgName: 'icon_text-box_outlined', svgName: 'icon_text-box_outlined',
@ -1014,7 +1010,7 @@ defineExpose({
getNodeList, getNodeList,
setStateBack, setStateBack,
notConfirm, notConfirm,
dfsNodeFieldBack, dfsNodeFieldBackReal,
initState, initState,
setChangeStatus, setChangeStatus,
crossDatasources crossDatasources

View File

@ -467,8 +467,20 @@ const delFieldByIdFake = (arr, fakeAllfields) => {
} }
const deleteField = item => { const deleteField = item => {
ElMessageBox.confirm(t('dataset.confirm_delete'), { let tip = ''
const idArr = allfields.value.reduce((pre, next) => {
if (next.extField !== 2) return pre
const idMap = next.originName.match(/\[(.+?)\]/g) || []
const result = idMap.map(itm => {
return itm.slice(1, -1)
})
pre = [...result, ...pre]
return pre
}, [])
tip = idArr.includes(item.id) ? `如果该字段被删除,与其相关的计算字段将被删除,确认删除?` : ''
ElMessageBox.confirm(`确认删除字段 ${item.name}`, {
confirmButtonText: t('dataset.confirm'), confirmButtonText: t('dataset.confirm'),
tip,
cancelButtonText: t('common.cancel'), cancelButtonText: t('common.cancel'),
showCancelButton: true, showCancelButton: true,
confirmButtonType: 'danger', confirmButtonType: 'danger',
@ -478,7 +490,7 @@ const deleteField = item => {
callback: (action: Action) => { callback: (action: Action) => {
if (action === 'confirm') { if (action === 'confirm') {
delFieldById([item.id]) delFieldById([item.id])
datasetDrag.value.dfsNodeFieldBack(datasetDrag.value.getNodeList(), item) datasetDrag.value.dfsNodeFieldBackReal(item)
ElMessage({ ElMessage({
message: t('chart.delete_success'), message: t('chart.delete_success'),
type: 'success' type: 'success'
@ -855,30 +867,28 @@ const confirmEditUnion = () => {
return pre return pre
}, []) }, [])
ElMessageBox.confirm( ElMessageBox.confirm('字段选择', {
`${t('data_set.field')}${allfields.value confirmButtonText: t('dataset.confirm'),
cancelButtonText: t('common.cancel'),
showCancelButton: true,
tip: `${t('data_set.field')}: ${allfields.value
.filter(ele => [...new Set(idArr)].includes(ele.id) && ele.extField !== 2) .filter(ele => [...new Set(idArr)].includes(ele.id) && ele.extField !== 2)
.map(ele => ele.name) .map(ele => ele.name)
.join(',')}${t('data_set.want_to_continue')}`, .join(',')}, 未被勾选, 与其相关的计算字段将被删除确认删除`,
{ confirmButtonType: 'danger',
confirmButtonText: t('dataset.confirm'), type: 'warning',
cancelButtonText: t('common.cancel'), autofocus: false,
showCancelButton: true, showClose: false,
confirmButtonType: 'danger', callback: (action: Action) => {
type: 'warning', if (action === 'confirm') {
autofocus: false, datasetDrag.value.setStateBack(top, bottom)
showClose: false, setFieldAll()
callback: (action: Action) => { editUnion.value = false
if (action === 'confirm') { addComplete()
datasetDrag.value.setStateBack(top, bottom) datasetDrag.value.setChangeStatus(to, from)
setFieldAll()
editUnion.value = false
addComplete()
datasetDrag.value.setChangeStatus(to, from)
}
} }
} }
) })
return return
} }