diff --git a/core/core-backend/pom.xml b/core/core-backend/pom.xml
index 34caa1e919..c6fa487a40 100644
--- a/core/core-backend/pom.xml
+++ b/core/core-backend/pom.xml
@@ -135,6 +135,21 @@
flexmark-all
${flexmark.version}
+
+ io.dataease
+ xpack-base
+ ${project.version}
+
+
+ io.dataease
+ xpack-permissions
+ ${project.version}
+
+
+ io.dataease
+ xpack-sync
+ ${project.version}
+
diff --git a/core/core-backend/src/main/java/io/dataease/visualization/manage/CoreVisualizationManage.java b/core/core-backend/src/main/java/io/dataease/visualization/manage/CoreVisualizationManage.java
index bf24d1e2e1..de54e9ccd5 100644
--- a/core/core-backend/src/main/java/io/dataease/visualization/manage/CoreVisualizationManage.java
+++ b/core/core-backend/src/main/java/io/dataease/visualization/manage/CoreVisualizationManage.java
@@ -130,8 +130,11 @@ public class CoreVisualizationManage {
DEException.throwException("resource not exist");
}
visualizationInfo.setUpdateTime(System.currentTimeMillis());
+ SnapshotDataVisualizationInfo snapshotVisualizationInfo = new SnapshotDataVisualizationInfo();
+ BeanUtils.copyBean(snapshotVisualizationInfo, visualizationInfo);
coreOptRecentManage.saveOpt(visualizationInfo.getId(), OptConstants.OPT_RESOURCE_TYPE.VISUALIZATION, OptConstants.OPT_TYPE.UPDATE);
mapper.updateById(visualizationInfo);
+ snapshotMapper.updateById(snapshotVisualizationInfo);
}
}
diff --git a/core/core-frontend/src/assets/svg/dv-cancel-publish.svg b/core/core-frontend/src/assets/svg/dv-cancel-publish.svg
new file mode 100644
index 0000000000..2fe89236a9
--- /dev/null
+++ b/core/core-frontend/src/assets/svg/dv-cancel-publish.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/core/core-frontend/src/components/handle-more/src/DvHandleMore.vue b/core/core-frontend/src/components/handle-more/src/DvHandleMore.vue
index e374e65a53..36bf5733b9 100644
--- a/core/core-frontend/src/components/handle-more/src/DvHandleMore.vue
+++ b/core/core-frontend/src/components/handle-more/src/DvHandleMore.vue
@@ -88,7 +88,7 @@ const emit = defineEmits(['handleCommand'])
:command="ele.command"
v-for="ele in menus"
:key="ele.label"
- :disabled="ele.disabled"
+ :disabled="ele.disabled || (ele.command === 'cancelPublish' && node.extraFlag1 === 0)"
:class="{ 'de-hidden-drop-item': ele.hidden }"
>
diff --git a/core/core-frontend/src/locales/en.ts b/core/core-frontend/src/locales/en.ts
index 3857099b12..7ba72e38dc 100644
--- a/core/core-frontend/src/locales/en.ts
+++ b/core/core-frontend/src/locales/en.ts
@@ -2874,6 +2874,7 @@ export default {
column_name: 'Field name'
},
visualization: {
+ cancel_publish_tips: 'Successfully unpublished',
resource_not_published: 'Resource not published',
re_publish: 'Republish',
published_success: 'Published successfully',
diff --git a/core/core-frontend/src/locales/tw.ts b/core/core-frontend/src/locales/tw.ts
index b84a7ab684..31229f4973 100644
--- a/core/core-frontend/src/locales/tw.ts
+++ b/core/core-frontend/src/locales/tw.ts
@@ -2795,6 +2795,7 @@ export default {
column_name: '欄位名稱'
},
visualization: {
+ cancel_publish_tips: '取消發佈成功',
resource_not_published: '資源未發佈',
re_publish: '重新發佈',
published_success: '發佈成功',
diff --git a/core/core-frontend/src/locales/zh-CN.ts b/core/core-frontend/src/locales/zh-CN.ts
index 947dd20c0b..0128386138 100644
--- a/core/core-frontend/src/locales/zh-CN.ts
+++ b/core/core-frontend/src/locales/zh-CN.ts
@@ -2801,6 +2801,7 @@ export default {
column_name: '字段名称'
},
visualization: {
+ cancel_publish_tips: '取消发布成功',
resource_not_published: '资源未发布',
re_publish: '重新发布',
published_success: '发布成功',
diff --git a/core/core-frontend/src/views/common/DeResourceTree.vue b/core/core-frontend/src/views/common/DeResourceTree.vue
index 1964ba89dc..a64889ecb7 100644
--- a/core/core-frontend/src/views/common/DeResourceTree.vue
+++ b/core/core-frontend/src/views/common/DeResourceTree.vue
@@ -4,6 +4,7 @@ import icon_add_outlined from '@/assets/svg/icon_add_outlined.svg'
import dvCopyDark from '@/assets/svg/dv-copy-dark.svg'
import dvDelete from '@/assets/svg/dv-delete.svg'
import dvMove from '@/assets/svg/dv-move.svg'
+import dvCancelPublish from '@/assets/svg/dv-cancel-publish.svg'
import { treeDraggbleChart } from '@/utils/treeDraggbleChart'
import { debounce } from 'lodash-es'
import dvRename from '@/assets/svg/dv-rename.svg'
@@ -23,7 +24,8 @@ import {
copyResource,
deleteLogic,
ResourceOrFolder,
- queryShareBaseApi
+ queryShareBaseApi,
+ updateBase
} from '@/api/visualization/dataVisualization'
import { ElIcon, ElMessage, ElMessageBox, ElScrollbar } from 'element-plus-secondary'
import { Icon } from '@/components/icon-custom'
@@ -170,10 +172,16 @@ const menuListWeight = id => {
return pWeight < 7 ? menuList : menuListWithCopy
}
const menuListWithCopy = [
+ {
+ label: t('visualization.cancel_publish'), //取消发布
+ command: 'cancelPublish',
+ svgName: dvCancelPublish
+ },
{
label: t('visualization.copy'), //'复制',
command: 'copy',
- svgName: dvCopyDark
+ svgName: dvCopyDark,
+ divided: true
},
{
label: t('visualization.move_to'), //'移动到',
@@ -193,10 +201,16 @@ const menuListWithCopy = [
}
]
const menuList = [
+ {
+ label: t('visualization.cancel_publish'), //取消发布
+ command: 'cancelPublish',
+ svgName: dvCancelPublish
+ },
{
label: t('visualization.move_to'), //'移动到',
command: 'move',
- svgName: dvMove
+ svgName: dvMove,
+ divided: true
},
{
label: t('visualization.rename'), //'重命名',
@@ -331,6 +345,22 @@ const operation = (cmd: string, data: BusiTreeNode, nodeType: string) => {
getTree()
})
})
+ } else if (cmd === 'cancelPublish') {
+ const params = {
+ id: data.id,
+ nodeType: 'leaf',
+ name: data.name,
+ type: curCanvasType.value,
+ mobileLayout: data?.extraFlag,
+ status: 0
+ }
+ updateBase(params).then(() => {
+ data['extraFlag1'] = 0
+ if (dvInfo.value.id === data.id) {
+ dvMainStore.updateDvInfoCall(0)
+ }
+ ElMessage.warning(t('visualization.cancel_publish_tips'))
+ })
} else if (cmd === 'edit') {
resourceEdit(data.id)
} else if (cmd === 'copy') {
diff --git a/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/auth/dto/BusiResourceEditor.java b/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/auth/dto/BusiResourceEditor.java
index dfb738b64c..72ee5cf1dc 100644
--- a/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/auth/dto/BusiResourceEditor.java
+++ b/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/auth/dto/BusiResourceEditor.java
@@ -14,4 +14,5 @@ public class BusiResourceEditor implements Serializable {
private String name;
private String flag;
private int extraFlag;
+ private int extraFlag1 = 0;
}