refactor(仪表板、数据大屏): 优化编辑保存冲突时的提示逻辑
This commit is contained in:
parent
3ae5936563
commit
01db3f028b
@ -431,20 +431,17 @@ public class DataVisualizationServer implements DataVisualizationApi {
|
||||
@Override
|
||||
public String checkCanvasChange(DataVisualizationBaseRequest request) {
|
||||
Long dvId = request.getId();
|
||||
Boolean checkHistory = request.getCheckHistory();
|
||||
if (dvId == null) {
|
||||
DEException.throwException("ID can not be null");
|
||||
}
|
||||
// 内容ID校验
|
||||
if(checkHistory !=null && checkHistory){
|
||||
QueryWrapper<DataVisualizationInfo> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("content_id", request.getContentId());
|
||||
queryWrapper.eq("id", dvId);
|
||||
if (visualizationInfoMapper.exists(queryWrapper)) {
|
||||
return "Repeat";
|
||||
}
|
||||
QueryWrapper<DataVisualizationInfo> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("content_id", request.getContentId());
|
||||
queryWrapper.eq("id", dvId);
|
||||
if (!visualizationInfoMapper.exists(queryWrapper)) {
|
||||
return "Repeat";
|
||||
}
|
||||
return null;
|
||||
return "Success";
|
||||
}
|
||||
|
||||
@DeLog(id = "#p0.id", ot = LogOT.MODIFY, stExp = "#p0.type")
|
||||
|
||||
@ -36,7 +36,7 @@ import MultiplexingCanvas from '@/views/common/MultiplexingCanvas.vue'
|
||||
import { useI18n } from '@/hooks/web/useI18n'
|
||||
import { getPanelAllLinkageInfo, saveLinkage } from '@/api/visualization/linkage'
|
||||
import { queryVisualizationJumpInfo } from '@/api/visualization/linkJump'
|
||||
import { canvasSave, initCanvasData } from '@/utils/canvasUtils'
|
||||
import { canvasSave, checkCanvasChangePre, initCanvasData } from '@/utils/canvasUtils'
|
||||
import { useEmitt } from '@/hooks/web/useEmitt'
|
||||
import { copyStoreWithOut } from '@/store/modules/data-visualization/copy'
|
||||
import TabsGroup from '@/custom-component/component-group/TabsGroup.vue'
|
||||
@ -205,7 +205,9 @@ const saveCanvasWithCheck = () => {
|
||||
return
|
||||
}
|
||||
}
|
||||
saveResource()
|
||||
checkCanvasChangePre(() => {
|
||||
saveResource()
|
||||
})
|
||||
}
|
||||
|
||||
const saveResource = () => {
|
||||
|
||||
@ -26,13 +26,7 @@ import MediaGroup from '@/custom-component/component-group/MediaGroup.vue'
|
||||
import TextGroup from '@/custom-component/component-group/TextGroup.vue'
|
||||
import CommonGroup from '@/custom-component/component-group/CommonGroup.vue'
|
||||
import DeResourceGroupOpt from '@/views/common/DeResourceGroupOpt.vue'
|
||||
import {
|
||||
canvasSave,
|
||||
checkCanvasChangePre,
|
||||
checkCanvasHistory,
|
||||
confirmUpdateCanvas,
|
||||
initCanvasData
|
||||
} from '@/utils/canvasUtils'
|
||||
import { canvasSave, checkCanvasChangePre, initCanvasData } from '@/utils/canvasUtils'
|
||||
import { changeSizeWithScale } from '@/utils/changeComponentsSizeWithScale'
|
||||
import MoreComGroup from '@/custom-component/component-group/MoreComGroup.vue'
|
||||
import { XpackComponent } from '@/components/plugin'
|
||||
|
||||
@ -13,7 +13,6 @@ import {
|
||||
appCanvasNameCheck,
|
||||
checkCanvasChange,
|
||||
decompression,
|
||||
deleteLogic,
|
||||
dvNameCheck,
|
||||
findById,
|
||||
findCopyResource,
|
||||
@ -32,16 +31,11 @@ import { deepCopy } from '@/utils/utils'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus-secondary'
|
||||
import { guid } from '@/views/visualized/data/dataset/form/util'
|
||||
const dvMainStore = dvMainStoreWithOut()
|
||||
const {
|
||||
inMobile,
|
||||
curBatchOptComponents,
|
||||
dvInfo,
|
||||
canvasStyleData,
|
||||
componentData,
|
||||
canvasViewInfo,
|
||||
appData
|
||||
} = storeToRefs(dvMainStore)
|
||||
const { inMobile, dvInfo, canvasStyleData, componentData, canvasViewInfo, appData } =
|
||||
storeToRefs(dvMainStore)
|
||||
const snapshotStore = snapshotStoreWithOut()
|
||||
import { useI18n } from '@/hooks/web/useI18n'
|
||||
const { t } = useI18n()
|
||||
|
||||
export function chartTransStr2Object(targetIn, copy) {
|
||||
const target = copy === 'Y' ? cloneDeep(targetIn) : targetIn
|
||||
@ -517,31 +511,27 @@ export function initCanvasDataMobile(dvId, busiFlag, callBack) {
|
||||
)
|
||||
}
|
||||
|
||||
export function checkIsBatchOptView(viewId) {
|
||||
return curBatchOptComponents.value.includes(viewId)
|
||||
}
|
||||
|
||||
export function checkCanvasHistory(callBack) {
|
||||
ElMessageBox.confirm('当前存在变更是否覆盖', {
|
||||
confirmButtonType: 'danger',
|
||||
type: 'warning',
|
||||
tip: '确认覆盖',
|
||||
autofocus: false,
|
||||
showClose: false
|
||||
}).then(() => {
|
||||
callBack()
|
||||
})
|
||||
}
|
||||
|
||||
export function checkCanvasChangePre(callBack) {
|
||||
// do pre
|
||||
const isUpdate = dvInfo.value.id && dvInfo.value.optType !== 'copy'
|
||||
if (isUpdate) {
|
||||
checkCanvasChange(dvInfo.value).then(rsp => {
|
||||
if (rsp.data === 'Repeat') {
|
||||
checkCanvasHistory(() => {
|
||||
const params = { ...dvInfo.value, watermarkInfo: null }
|
||||
const tips =
|
||||
(dvInfo.value.type === 'dashboard'
|
||||
? t('work_branch.dashboard')
|
||||
: t('work_branch.big_data_screen')) + '已被他人更新,是否覆盖保存?'
|
||||
checkCanvasChange(params).then(rsp => {
|
||||
if (rsp && rsp.data === 'Repeat') {
|
||||
ElMessageBox.confirm(tips, {
|
||||
confirmButtonType: 'danger',
|
||||
type: 'warning',
|
||||
autofocus: false,
|
||||
showClose: false
|
||||
}).then(() => {
|
||||
callBack()
|
||||
})
|
||||
} else {
|
||||
callBack()
|
||||
}
|
||||
})
|
||||
} else {
|
||||
@ -602,7 +592,7 @@ export async function canvasSave(callBack) {
|
||||
})
|
||||
}
|
||||
method(canvasInfo).then(res => {
|
||||
dvMainStore.updateDvInfoId(res.data)
|
||||
dvMainStore.updateDvInfoId(res.data, newContentId)
|
||||
snapshotStore.resetStyleChangeTimes()
|
||||
callBack(res)
|
||||
})
|
||||
|
||||
@ -148,6 +148,7 @@ public class DataVisualizationVO implements Serializable {
|
||||
/**
|
||||
* 内容标识
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private String contentId;
|
||||
|
||||
/**
|
||||
|
||||
Loading…
Reference in New Issue
Block a user