mirror of
https://github.com/dataease/dataease.git
synced 2026-05-15 13:32:18 +08:00
refactor: 发布样式调整
This commit is contained in:
@@ -286,30 +286,22 @@ public class CoreVisualizationManage {
|
||||
outerParamsMapper.deleteOuterParamsWithVisualizationId(dvId.toString());
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void dvSnapshotCheck(Long dvId){
|
||||
/**
|
||||
* 1.检查当前仪表板(大屏)是否存在镜像
|
||||
* 2.如果已经存在 不做处理
|
||||
* 3.如果不存在则将主表所有信息拷贝到镜像中
|
||||
* */
|
||||
QueryWrapper<SnapshotDataVisualizationInfo> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("id", dvId);
|
||||
if(!snapshotMapper.exists(queryWrapper)){
|
||||
// 清理历史数据
|
||||
this.removeSnapshot(dvId);
|
||||
// 导入新数据
|
||||
extDataVisualizationMapper.snapshotDataV(dvId);
|
||||
extDataVisualizationMapper.snapshotViews(dvId);
|
||||
extDataVisualizationMapper.snapshotLinkJumpTargetViewInfo(dvId);
|
||||
extDataVisualizationMapper.snapshotLinkJumpInfo(dvId);
|
||||
extDataVisualizationMapper.snapshotLinkJump(dvId);
|
||||
extDataVisualizationMapper.snapshotLinkageField(dvId);
|
||||
extDataVisualizationMapper.snapshotLinkage(dvId);
|
||||
extDataVisualizationMapper.snapshotOuterParamsTargetViewInfo(dvId);
|
||||
extDataVisualizationMapper.snapshotOuterParamsInfo(dvId);
|
||||
extDataVisualizationMapper.snapshotOuterParams(dvId);
|
||||
}
|
||||
public void dvSnapshotRecover(Long dvId){
|
||||
// 清理历史数据
|
||||
this.removeSnapshot(dvId);
|
||||
// 导入新数据
|
||||
extDataVisualizationMapper.snapshotDataV(dvId);
|
||||
extDataVisualizationMapper.snapshotViews(dvId);
|
||||
extDataVisualizationMapper.snapshotLinkJumpTargetViewInfo(dvId);
|
||||
extDataVisualizationMapper.snapshotLinkJumpInfo(dvId);
|
||||
extDataVisualizationMapper.snapshotLinkJump(dvId);
|
||||
extDataVisualizationMapper.snapshotLinkageField(dvId);
|
||||
extDataVisualizationMapper.snapshotLinkage(dvId);
|
||||
extDataVisualizationMapper.snapshotOuterParamsTargetViewInfo(dvId);
|
||||
extDataVisualizationMapper.snapshotOuterParamsInfo(dvId);
|
||||
extDataVisualizationMapper.snapshotOuterParams(dvId);
|
||||
}
|
||||
@Transactional
|
||||
public void dvRestore(Long dvId){
|
||||
|
||||
@@ -51,8 +51,10 @@ import io.dataease.template.dao.ext.ExtVisualizationTemplateMapper;
|
||||
import io.dataease.template.manage.TemplateCenterManage;
|
||||
import io.dataease.utils.*;
|
||||
import io.dataease.visualization.dao.auto.entity.DataVisualizationInfo;
|
||||
import io.dataease.visualization.dao.auto.entity.SnapshotDataVisualizationInfo;
|
||||
import io.dataease.visualization.dao.auto.entity.VisualizationWatermark;
|
||||
import io.dataease.visualization.dao.auto.mapper.DataVisualizationInfoMapper;
|
||||
import io.dataease.visualization.dao.auto.mapper.SnapshotDataVisualizationInfoMapper;
|
||||
import io.dataease.visualization.dao.auto.mapper.VisualizationWatermarkMapper;
|
||||
import io.dataease.visualization.dao.ext.mapper.ExtDataVisualizationMapper;
|
||||
import io.dataease.visualization.manage.CoreBusiManage;
|
||||
@@ -144,6 +146,9 @@ public class DataVisualizationServer implements DataVisualizationApi {
|
||||
@Resource
|
||||
private DatasourceServer datasourceServer;
|
||||
|
||||
@Resource
|
||||
private SnapshotDataVisualizationInfoMapper snapshotMapper;
|
||||
|
||||
@Override
|
||||
public DataVisualizationVO findCopyResource(Long dvId, String busiFlag) {
|
||||
DataVisualizationVO result = Objects.requireNonNull(CommonBeanFactory.proxy(this.getClass())).findById(new DataVisualizationBaseRequest(dvId, busiFlag));
|
||||
@@ -164,7 +169,11 @@ public class DataVisualizationServer implements DataVisualizationApi {
|
||||
String resourceTable = request.getResourceTable();
|
||||
// 如果是编辑查询 则进行镜像检查
|
||||
if(CommonConstants.RESOURCE_TABLE.SNAPSHOT.equals(resourceTable)){
|
||||
coreVisualizationManage.dvSnapshotCheck(dvId);
|
||||
QueryWrapper<SnapshotDataVisualizationInfo> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("id", dvId);
|
||||
if(!snapshotMapper.exists(queryWrapper)){
|
||||
coreVisualizationManage.dvSnapshotRecover(dvId);
|
||||
}
|
||||
}
|
||||
DataVisualizationVO result = extDataVisualizationMapper.findDvInfo(dvId, busiFlag,resourceTable);
|
||||
if (result != null) {
|
||||
@@ -531,6 +540,16 @@ public class DataVisualizationServer implements DataVisualizationApi {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void recoverToPublished(DataVisualizationBaseRequest request) {
|
||||
coreVisualizationManage.dvSnapshotRecover(request.getId());
|
||||
DataVisualizationInfo visualizationInfo = new DataVisualizationInfo();
|
||||
visualizationInfo.setId(request.getId());
|
||||
visualizationInfo.setName(request.getName());
|
||||
visualizationInfo.setStatus(CommonConstants.DV_STATUS.PUBLISHED);
|
||||
coreVisualizationManage.innerEdit(visualizationInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 更新基础信息;
|
||||
* 为什么单独接口:1.基础信息更新频繁数据且数据载量较小;2.防止出现更新过多信息的情况,造成图表的误删等操作
|
||||
|
||||
@@ -63,8 +63,10 @@ export const saveCanvas = data =>
|
||||
request.post({ url: '/dataVisualization/saveCanvas', data, loading: true })
|
||||
|
||||
export const updatePublishStatus = data =>
|
||||
request.post({ url: '/dataVisualization/updatePublishStatus', data, loading: true })
|
||||
request.post({ url: '/dataVisualization/updatePublishStatus', data, loading: false })
|
||||
|
||||
export const recoverToPublished = data =>
|
||||
request.post({ url: '/dataVisualization/recoverToPublished', data, loading: true })
|
||||
export const appCanvasNameCheck = async data =>
|
||||
request.post({ url: '/dataVisualization/appCanvasNameCheck', data, loading: false })
|
||||
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M3.0166 1H11.3095C11.4421 1 11.5693 1.05268 11.663 1.14645L13.3702 2.85355C13.4639 2.94732 13.5166 3.0745 13.5166 3.20711V14.5C13.5166 14.7761 13.2927 15 13.0166 15L6.61962 14.9998C6.61373 14.9998 6.60786 14.9997 6.60202 14.9995L6.60786 14.9997V13.8H12.3167V4H10.6916C10.595 4 10.5166 3.92165 10.5166 3.825V2.2H3.71668V8.98657H2.5166V1.5C2.5166 1.22386 2.74046 1 3.0166 1Z" />
|
||||
<path d="M5.94584 9.5C5.68794 9.26773 5.36928 9.10161 5.0166 9.02837V8.41667C5.0166 8.35224 5.06884 8.3 5.13327 8.3H8.23327C8.2977 8.3 8.34994 8.35223 8.34994 8.41667V9.38333C8.34994 9.44777 8.2977 9.5 8.23327 9.5H5.94584Z"/>
|
||||
<path d="M5.0166 5.91667C5.0166 5.85223 5.06884 5.8 5.13327 5.8H10.8999C10.9644 5.8 11.0166 5.85223 11.0166 5.91667V6.88333C11.0166 6.94777 10.9644 7 10.8999 7H5.13327C5.06884 7 5.0166 6.94777 5.0166 6.88333V5.91667Z"/>
|
||||
<path d="M5.17545 10.1799C5.17545 10.0805 5.09492 10 4.99557 10H1.00471C0.844448 10 0.76419 10.1938 0.87751 10.3071L2.15664 11.5862C1.31561 12.545 0.686543 14.7137 1.72678 15.754C1.79493 15.8221 1.8973 15.9133 2.00475 15.9865C2.03989 16.0091 2.07237 16.0023 2.09415 15.9741C2.10517 15.9586 2.10964 15.9395 2.10658 15.9207C2.10038 15.8659 2.09586 15.8212 2.09186 15.7817C2.0886 15.7497 2.0857 15.721 2.08252 15.693C2.00232 14.9869 2.885 13.7726 3.59451 13.0241L4.86837 14.2979C4.98169 14.4113 5.17545 14.331 5.17545 14.1707L5.17545 10.1799Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -16,7 +16,9 @@ import icon_undo_outlined from '@/assets/svg/icon_undo_outlined.svg'
|
||||
import icon_redo_outlined from '@/assets/svg/icon_redo_outlined.svg'
|
||||
import icon_pc_fullscreen from '@/assets/svg/icon_pc_fullscreen.svg'
|
||||
import dvPreviewOuter from '@/assets/svg/dv-preview-outer.svg'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus-secondary'
|
||||
import dvRecoverOutlined from '@/assets/svg/dv-recover_outlined.svg'
|
||||
import dvCancelPublish from '@/assets/svg/icon_undo_outlined.svg'
|
||||
import { ElIcon, ElMessage, ElMessageBox } from 'element-plus-secondary'
|
||||
import eventBus from '@/utils/eventBus'
|
||||
import { useEmbedded } from '@/store/modules/embedded'
|
||||
import { deepCopy } from '@/utils/utils'
|
||||
@@ -85,6 +87,7 @@ const { wsCache } = useCache('localStorage')
|
||||
const userStore = useUserStoreWithOut()
|
||||
const isIframe = computed(() => appStore.getIsIframe)
|
||||
const desktop = wsCache.get('app.desktop')
|
||||
const emits = defineEmits(['recoverToPublished'])
|
||||
|
||||
const props = defineProps({
|
||||
createType: {
|
||||
@@ -180,6 +183,10 @@ const resourceOptFinish = param => {
|
||||
}
|
||||
}
|
||||
|
||||
const recoverToPublished = () => {
|
||||
emits('recoverToPublished')
|
||||
}
|
||||
|
||||
const publishStatusChange = status => {
|
||||
// do update
|
||||
updatePublishStatus({
|
||||
@@ -189,7 +196,9 @@ const publishStatusChange = status => {
|
||||
type: 'dashboard'
|
||||
}).then(() => {
|
||||
dvMainStore.updateDvInfoCall(status)
|
||||
ElMessage.success(t('visualization.published_success'))
|
||||
status
|
||||
? ElMessage.success(t('visualization.published_success'))
|
||||
: ElMessage.success(t('visualization.cancel_publish_tips'))
|
||||
})
|
||||
}
|
||||
|
||||
@@ -713,23 +722,35 @@ const initOpenHandler = newWindow => {
|
||||
>
|
||||
{{ t('data_set.save') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="dvInfo.status === 2"
|
||||
@click="publishStatusChange(1)"
|
||||
style="float: right; margin: 0 12px 0 0"
|
||||
type="primary"
|
||||
>
|
||||
{{ t('visualization.re_publish') }}
|
||||
</el-button>
|
||||
<!--保存未发布状态-->
|
||||
<el-button
|
||||
v-if="dvInfo.status === 0"
|
||||
@click="publishStatusChange(1)"
|
||||
style="float: right; margin: 0 12px 0 0"
|
||||
type="primary"
|
||||
>
|
||||
{{ t('visualization.publish') }}
|
||||
</el-button>
|
||||
<el-dropdown popper-class="menu-outer-dv_popper" trigger="hover">
|
||||
<el-button
|
||||
@click="publishStatusChange(1)"
|
||||
style="float: right; margin: 0 12px 0 0"
|
||||
type="primary"
|
||||
>
|
||||
{{ t('visualization.publish') }}
|
||||
</el-button>
|
||||
<template #dropdown>
|
||||
<el-dropdown-menu>
|
||||
<el-dropdown-item @click="recoverToPublished" :disabled="dvInfo.status !== 2">
|
||||
<el-icon class="handle-icon">
|
||||
<Icon name="icon_left_outlined"
|
||||
><dv-recover-outlined class="svg-icon toolbar-icon"
|
||||
/></Icon>
|
||||
</el-icon>
|
||||
{{ t('visualization.publish_recover') }}
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item @click="publishStatusChange(0)" :disabled="dvInfo.status === 0">
|
||||
<el-icon class="handle-icon">
|
||||
<Icon name="icon_left_outlined"
|
||||
><dv-cancel-publish class="svg-icon toolbar-icon"
|
||||
/></Icon>
|
||||
</el-icon>
|
||||
{{ t('visualization.cancel_publish') }}
|
||||
</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</template>
|
||||
</el-dropdown>
|
||||
</template>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -11,7 +11,9 @@ import icon_copy_filled from '@/assets/svg/icon_copy_filled.svg'
|
||||
import icon_left_outlined from '@/assets/svg/icon_left_outlined.svg'
|
||||
import icon_undo_outlined from '@/assets/svg/icon_undo_outlined.svg'
|
||||
import icon_redo_outlined from '@/assets/svg/icon_redo_outlined.svg'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus-secondary'
|
||||
import dvRecoverOutlined from '@/assets/svg/dv-recover_outlined.svg'
|
||||
import dvCancelPublish from '@/assets/svg/icon_undo_outlined.svg'
|
||||
import { ElIcon, ElMessage, ElMessageBox } from 'element-plus-secondary'
|
||||
import eventBus from '@/utils/eventBus'
|
||||
import { ref, nextTick, computed, toRefs, onBeforeUnmount, onMounted } from 'vue'
|
||||
import { useEmbedded } from '@/store/modules/embedded'
|
||||
@@ -61,6 +63,7 @@ const outerParamsSetRef = ref(null)
|
||||
const fullScreeRef = ref(null)
|
||||
const userStore = useUserStoreWithOut()
|
||||
const { t } = useI18n()
|
||||
const emits = defineEmits(['recoverToPublished'])
|
||||
|
||||
const props = defineProps({
|
||||
createType: {
|
||||
@@ -68,9 +71,6 @@ const props = defineProps({
|
||||
default: 'create'
|
||||
}
|
||||
})
|
||||
|
||||
const { createType } = toRefs(props)
|
||||
|
||||
const closeEditCanvasName = () => {
|
||||
nameEdit.value = false
|
||||
if (!inputName.value || !inputName.value.trim()) {
|
||||
@@ -88,6 +88,10 @@ const closeEditCanvasName = () => {
|
||||
inputName.value = ''
|
||||
}
|
||||
|
||||
const recoverToPublished = () => {
|
||||
emits('recoverToPublished')
|
||||
}
|
||||
|
||||
const undo = () => {
|
||||
snapshotStore.undo()
|
||||
}
|
||||
@@ -309,7 +313,9 @@ const publishStatusChange = status => {
|
||||
type: 'dataV'
|
||||
}).then(() => {
|
||||
dvMainStore.updateDvInfoCall(status)
|
||||
ElMessage.success(t('visualization.published_success'))
|
||||
status
|
||||
? ElMessage.success(t('visualization.published_success'))
|
||||
: ElMessage.success(t('visualization.cancel_publish_tips'))
|
||||
})
|
||||
}
|
||||
|
||||
@@ -467,23 +473,38 @@ const fullScreenPreview = () => {
|
||||
>
|
||||
{{ t('visualization.save') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="dvInfo.status === 2"
|
||||
@click="publishStatusChange(1)"
|
||||
style="float: right; margin: 0 12px 0 0"
|
||||
type="primary"
|
||||
>
|
||||
{{ t('visualization.re_publish') }}
|
||||
</el-button>
|
||||
<!--保存未发布状态-->
|
||||
<el-button
|
||||
v-if="dvInfo.status === 0"
|
||||
@click="publishStatusChange(1)"
|
||||
style="float: right; margin: 0 12px 0 0"
|
||||
type="primary"
|
||||
>
|
||||
{{ t('visualization.publish') }}
|
||||
</el-button>
|
||||
<el-dropdown effect="dark" popper-class="menu-outer-dv_popper" trigger="hover">
|
||||
<el-button
|
||||
@click="publishStatusChange(1)"
|
||||
style="float: right; margin: 0 12px 0 0"
|
||||
type="primary"
|
||||
>
|
||||
{{ t('visualization.publish') }}
|
||||
</el-button>
|
||||
<template #dropdown>
|
||||
<el-dropdown-menu>
|
||||
<el-dropdown-item @click="recoverToPublished" :disabled="dvInfo.status !== 2">
|
||||
<el-icon class="handle-icon">
|
||||
<Icon name="icon_left_outlined"
|
||||
><dv-recover-outlined class="svg-icon toolbar-icon"
|
||||
/></Icon>
|
||||
</el-icon>
|
||||
{{ t('visualization.publish_recover') }}
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item
|
||||
@click.stop="publishStatusChange(0)"
|
||||
:disabled="dvInfo.status === 0"
|
||||
>
|
||||
<el-icon class="handle-icon">
|
||||
<Icon name="icon_left_outlined"
|
||||
><dv-cancel-publish class="svg-icon toolbar-icon"
|
||||
/></Icon>
|
||||
</el-icon>
|
||||
{{ t('visualization.cancel_publish') }}
|
||||
</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</template>
|
||||
</el-dropdown>
|
||||
</div>
|
||||
</div>
|
||||
<Teleport v-if="nameEdit" :to="'#dv-canvas-name'">
|
||||
|
||||
@@ -2881,6 +2881,7 @@ export default {
|
||||
column_name: 'Field name'
|
||||
},
|
||||
visualization: {
|
||||
publish_recover: 'Revert to the published version',
|
||||
publish_tips1: 'Visible after publication',
|
||||
publish_tips2: 'Available after publication {0}',
|
||||
cancel_publish_tips: 'Successfully unpublished',
|
||||
|
||||
@@ -2802,6 +2802,7 @@ export default {
|
||||
column_name: '欄位名稱'
|
||||
},
|
||||
visualization: {
|
||||
publish_recover: '恢復到發佈版本',
|
||||
publish_tips1: '發佈後可查看',
|
||||
publish_tips2: '發佈後可{0}',
|
||||
cancel_publish_tips: '取消發佈成功',
|
||||
|
||||
@@ -2808,6 +2808,7 @@ export default {
|
||||
column_name: '字段名称'
|
||||
},
|
||||
visualization: {
|
||||
publish_recover: '恢复到发布版本',
|
||||
publish_tips1: '发布后可查看',
|
||||
publish_tips2: '发布后可{0}',
|
||||
cancel_publish_tips: '取消发布成功',
|
||||
|
||||
@@ -33,6 +33,7 @@ import { usePermissionStoreWithOut } from '@/store/modules/permission'
|
||||
import eventBus from '@/utils/eventBus'
|
||||
import { useI18n } from '@/hooks/web/useI18n'
|
||||
import DashboardHiddenComponent from '@/components/dashboard/DashboardHiddenComponent.vue'
|
||||
import { recoverToPublished } from '@/api/visualization/dataVisualization'
|
||||
const embeddedStore = useEmbedded()
|
||||
const { wsCache } = useCache()
|
||||
const canvasCacheOutRef = ref(null)
|
||||
@@ -158,7 +159,7 @@ const doUseCache = flag => {
|
||||
}
|
||||
}
|
||||
|
||||
const initLocalCanvasData = () => {
|
||||
const initLocalCanvasData = callBack => {
|
||||
const { resourceId, opt, sourcePid } = state
|
||||
const busiFlg = opt === 'copy' ? 'dashboard-copy' : 'dashboard'
|
||||
initCanvasData(resourceId, { busiFlg, resourceTable: 'snapshot' }, function () {
|
||||
@@ -172,6 +173,7 @@ const initLocalCanvasData = () => {
|
||||
}, 1500)
|
||||
}
|
||||
onInitReady({ resourceId: resourceId })
|
||||
callBack && callBack()
|
||||
})
|
||||
}
|
||||
onMounted(async () => {
|
||||
@@ -212,7 +214,9 @@ onMounted(async () => {
|
||||
if (canvasCache) {
|
||||
canvasCacheOutRef.value?.dialogInit({ canvasType: 'dashboard', resourceId: resourceId })
|
||||
} else {
|
||||
initLocalCanvasData()
|
||||
initLocalCanvasData(() => {
|
||||
// do init
|
||||
})
|
||||
}
|
||||
} else if (opt && opt === 'create') {
|
||||
dataInitState.value = false
|
||||
@@ -292,6 +296,19 @@ const cancelHidden = item => {
|
||||
}
|
||||
}
|
||||
|
||||
const doRecoverToPublished = () => {
|
||||
recoverToPublished({ id: dvInfo.value.id, type: 'dashboard', name: dvInfo.value.name }).then(
|
||||
() => {
|
||||
initLocalCanvasData(() => {
|
||||
nextTick(() => {
|
||||
deCanvasRef.value.canvasInit(false)
|
||||
dvMainStore.updateDvInfoCall(1)
|
||||
})
|
||||
})
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
onUnmounted(() => {
|
||||
window.removeEventListener('storage', eventCheck)
|
||||
window.removeEventListener('message', winMsgHandle)
|
||||
@@ -305,7 +322,7 @@ onUnmounted(() => {
|
||||
v-loading="requestStore.loadingMap[permissionStore.currentPath]"
|
||||
v-if="loadFinish && !mobileConfig"
|
||||
>
|
||||
<DbToolbar />
|
||||
<DbToolbar @recoverToPublished="doRecoverToPublished" />
|
||||
<el-container
|
||||
class="dv-layout-container"
|
||||
:class="{ 'preview-content': editMode === 'preview' }"
|
||||
|
||||
@@ -47,6 +47,7 @@ import { usePermissionStoreWithOut } from '@/store/modules/permission'
|
||||
import ChartStyleBatchSet from '@/views/chart/components/editor/editor-style/ChartStyleBatchSet.vue'
|
||||
import CustomTabsSort from '@/custom-component/de-tabs/CustomTabsSort.vue'
|
||||
import { useI18n } from '@/hooks/web/useI18n'
|
||||
import { recoverToPublished } from '@/api/visualization/dataVisualization'
|
||||
const interactiveStore = interactiveStoreWithOut()
|
||||
const embeddedStore = useEmbedded()
|
||||
const { wsCache } = useCache()
|
||||
@@ -292,12 +293,14 @@ const doUseCache = flag => {
|
||||
}, 2000)
|
||||
})
|
||||
} else {
|
||||
initLocalCanvasData()
|
||||
initLocalCanvasData(() => {
|
||||
// do init
|
||||
})
|
||||
wsCache.delete('DE-DV-CATCH-' + state.resourceId)
|
||||
}
|
||||
}
|
||||
|
||||
const initLocalCanvasData = async () => {
|
||||
const initLocalCanvasData = async callback => {
|
||||
const { opt, sourcePid, resourceId } = state
|
||||
const busiFlag = opt === 'copy' ? 'dataV-copy' : 'dataV'
|
||||
await initCanvasData(resourceId, { busiFlag, resourceTable: 'snapshot' }, function () {
|
||||
@@ -315,6 +318,7 @@ const initLocalCanvasData = async () => {
|
||||
}, 1500)
|
||||
}
|
||||
onInitReady({ resourceId: resourceId })
|
||||
callback && callback()
|
||||
})
|
||||
})
|
||||
}
|
||||
@@ -401,7 +405,9 @@ onMounted(async () => {
|
||||
if (canvasCache) {
|
||||
canvasCacheOutRef.value?.dialogInit({ canvasType: 'dataV', resourceId: dvId })
|
||||
} else {
|
||||
await initLocalCanvasData()
|
||||
await initLocalCanvasData(() => {
|
||||
// do init
|
||||
})
|
||||
}
|
||||
} else if (opt && opt === 'create') {
|
||||
state.canvasInitStatus = false
|
||||
@@ -498,6 +504,14 @@ const popComponentData = computed(() =>
|
||||
componentData.value.filter(ele => ele.category && ele.category === 'hidden')
|
||||
)
|
||||
|
||||
const doRecoverToPublished = () => {
|
||||
recoverToPublished({ id: dvInfo.value.id, type: 'dataV', name: dvInfo.value.name }).then(() => {
|
||||
initLocalCanvasData(() => {
|
||||
dvMainStore.updateDvInfoCall(1)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
eventBus.on('handleNew', handleNew)
|
||||
|
||||
eventBus.on('tabSort', tabSort)
|
||||
@@ -509,7 +523,7 @@ eventBus.on('tabSort', tabSort)
|
||||
class="dv-common-layout"
|
||||
:class="isDataEaseBi && !newWindowFromDiv && 'dataease-w-h'"
|
||||
>
|
||||
<DvToolbar />
|
||||
<DvToolbar @recover-to-published="doRecoverToPublished" />
|
||||
<div class="custom-dv-divider" />
|
||||
<el-container
|
||||
v-if="loadFinish"
|
||||
|
||||
2
de-xpack
2
de-xpack
Submodule de-xpack updated: 17a8465025...c67966f391
@@ -70,6 +70,11 @@ public interface DataVisualizationApi {
|
||||
@Operation(summary = "发布状态更新")
|
||||
void updatePublishStatus(@RequestBody DataVisualizationBaseRequest request);
|
||||
|
||||
@PostMapping("/recoverToPublished")
|
||||
@DePermit(value = {"#p0.id + ':manage'"}, busiFlag = "#p0.type")
|
||||
@Operation(summary = "恢复到发布状态")
|
||||
void recoverToPublished(@RequestBody DataVisualizationBaseRequest request);
|
||||
|
||||
@PostMapping("/updateBase")
|
||||
@DePermit(value = {"#p0.id + ':manage'"}, busiFlag = "#p0.type")
|
||||
@Operation(summary = "可视化资源基础信息更新")
|
||||
|
||||
Reference in New Issue
Block a user