diff --git a/core/core-frontend/src/views/visualized/data/dataset/form/AddSql.vue b/core/core-frontend/src/views/visualized/data/dataset/form/AddSql.vue index ae3858074a..94db7d2bee 100644 --- a/core/core-frontend/src/views/visualized/data/dataset/form/AddSql.vue +++ b/core/core-frontend/src/views/visualized/data/dataset/form/AddSql.vue @@ -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 = () => { {{ t('auth.sysParams') }} - + {{ t('data_set.save') }} diff --git a/core/core-frontend/src/views/visualized/data/dataset/form/DatasetUnion.vue b/core/core-frontend/src/views/visualized/data/dataset/form/DatasetUnion.vue index 311cae568e..13a9658e2f 100644 --- a/core/core-frontend/src/views/visualized/data/dataset/form/DatasetUnion.vue +++ b/core/core-frontend/src/views/visualized/data/dataset/form/DatasetUnion.vue @@ -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 } diff --git a/core/core-frontend/src/views/visualized/data/dataset/form/UnionEdit.vue b/core/core-frontend/src/views/visualized/data/dataset/form/UnionEdit.vue index b81a4263f4..430a91384d 100644 --- a/core/core-frontend/src/views/visualized/data/dataset/form/UnionEdit.vue +++ b/core/core-frontend/src/views/visualized/data/dataset/form/UnionEdit.vue @@ -43,7 +43,7 @@ const parentField = ref([]) const nodeField = ref([]) const node = reactive(cloneDeep(defaultNode)) const parent = reactive(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({