fix(数据集): 自定义sql未保存直接点关闭没有提示信息

This commit is contained in:
dataeaseShu
2025-09-09 16:03:05 +08:00
committed by dataeaseShu
parent ee1870a172
commit eec76fdfc1
3 changed files with 47 additions and 24 deletions

View File

@@ -245,8 +245,10 @@ onMounted(async () => {
}
}
}
sql = Base64.decode(sqlNode.value.sql)
codeCom.value = myCm.value.codeComInit(setNameIdTrans('id', 'name', sql), true)
codeCom.value = myCm.value.codeComInit(
setNameIdTrans('id', 'name', Base64.decode(sqlNode.value.sql)),
true
)
})
onBeforeUnmount(() => {
@@ -364,7 +366,7 @@ const setFlag = () => {
}
let sql = ''
const save = (cb?: () => void) => {
const save = () => {
if (!sqlNode.value.tableName.trim()) {
ElMessage.error(t('data_set.cannot_be_empty'))
return
@@ -385,10 +387,11 @@ const save = (cb?: () => void) => {
sql: Base64.encode(sql),
sqlVariableDetails: JSON.stringify(state.variables)
},
cb
() => {
ElMessage.success(t('common.save_success'))
}
)
changeFlag = false
ElMessage.success(t('common.save_success'))
}
const close = () => {
@@ -403,6 +406,7 @@ const close = () => {
const handleClose = () => {
let sqlNew = setNameIdTrans('name', 'id', codeCom.value.state.doc.toString())
if (changeFlag || sql !== sqlNew || !sqlNew.trim()) {
ElMessageBox.confirm(t('chart.tips'), {
confirmButtonType: 'primary',
@@ -427,7 +431,7 @@ const getSQLPreview = () => {
dataPreviewLoading.value = true
getPreviewSql({
isCross: isCross.value,
sql: Base64.encode((sql = setNameIdTrans('name', 'id', codeCom.value.state.doc.toString()))),
sql: Base64.encode(setNameIdTrans('name', 'id', codeCom.value.state.doc.toString())),
datasourceId: sqlNode.value.datasourceId,
sqlVariableDetails: JSON.stringify(state.variables)
})
@@ -622,7 +626,7 @@ const mousedownDrag = () => {
</template>
{{ t('auth.sysParams') }}
</el-button>
<el-button :disabled="!changeFlagCode" @click="save(() => {})" type="primary">
<el-button :disabled="!changeFlagCode" @click="save" type="primary">
{{ t('data_set.save') }}</el-button
>
<el-divider direction="vertical" />

View File

@@ -221,11 +221,8 @@ const saveSqlNode = (val: SqlNode, cb) => {
unionFields: [],
currentDsFields: []
})
state.visualNode.confirm = true
if (!state.nodeList.length) {
state.visualNode.tableName = tableName
state.nodeList.push(state.visualNode)
currentNode.value = state.nodeList[0]
getTableField({
datasourceId,
id: id,
@@ -234,6 +231,9 @@ const saveSqlNode = (val: SqlNode, cb) => {
type: 'sql',
isCross: isCross.value
}).then(res => {
state.visualNode.confirm = true
state.nodeList.push(state.visualNode)
currentNode.value = state.nodeList[0]
nodeField.value = res as unknown as Field[]
nodeField.value.forEach(ele => {
ele.checked = true
@@ -241,8 +241,20 @@ const saveSqlNode = (val: SqlNode, cb) => {
state.nodeList[0].currentDsFields = cloneDeep(res)
cb?.()
confirmEditUnion()
confirm()
})
} else {
getTableField({
datasourceId,
id: id,
info: state.visualNode.info,
tableName,
type: 'sql',
isCross: isCross.value
}).then(() => {
state.visualNode.confirm = true
cb?.()
})
confirm()
}
return
}

View File

@@ -43,7 +43,7 @@ const parentField = ref<Field[]>([])
const nodeField = ref<Field[]>([])
const node = reactive<Node>(cloneDeep(defaultNode))
const parent = reactive<Node>(cloneDeep(defaultNode))
const loading = ref(false)
const props = defineProps({
editArr: {
type: Array,
@@ -82,16 +82,23 @@ const getParams = (obj: Node) => {
)
}
const getFields = async () => {
const [n, p] = props.editArr as Node[]
const [nr, pr] = await Promise.all([getTableField(getParams(n)), getTableField(getParams(p))])
parentField.value = pr as unknown as Field[]
parentField.value.forEach(ele => {
ele.checked = p.currentDsFields.map(ele => ele.originName).includes(ele.originName)
})
nodeField.value = nr as unknown as Field[]
nodeField.value.forEach(ele => {
ele.checked = n.currentDsFields.map(ele => ele.originName).includes(ele.originName)
})
try {
loading.value = true
const [n, p] = props.editArr as Node[]
const [nr, pr] = await Promise.all([getTableField(getParams(n)), getTableField(getParams(p))])
loading.value = false
parentField.value = pr as unknown as Field[]
parentField.value.forEach(ele => {
ele.checked = p.currentDsFields.map(ele => ele.originName).includes(ele.originName)
})
nodeField.value = nr as unknown as Field[]
nodeField.value.forEach(ele => {
ele.checked = n.currentDsFields.map(ele => ele.originName).includes(ele.originName)
})
} catch (error) {
loading.value = false
console.error(error)
}
}
defineExpose({
@@ -105,7 +112,7 @@ defineExpose({
<template>
<div style="height: 100%; overflow-y: auto">
<div class="field-style">
<div class="fields" v-loading="!parentField.length">
<div class="fields" v-loading="loading">
<p :title="parent.tableName">
{{ parent.tableName }}
</p>
@@ -116,7 +123,7 @@ defineExpose({
@checkedFields="changeParentFields"
/>
</div>
<div class="fields" v-loading="!nodeField.length">
<div class="fields" v-loading="loading">
<p :title="node.tableName">
{{ node.tableName }}
</p>