|
|
@@ -1,7 +1,7 @@
|
|
|
<template>
|
|
|
<div class="min-map">
|
|
|
<header class="min-map__header">
|
|
|
- <section class="min-map__btn" @click="handleBack">
|
|
|
+ <section class="min-map__btn" @click="router.back">
|
|
|
<img :src="rollback">
|
|
|
<span>返回</span>
|
|
|
</section>
|
|
|
@@ -63,7 +63,7 @@ import { onMounted, onUnmounted, ref, computed, reactive, nextTick } from 'vue';
|
|
|
import { updateMinMapViewLayoutApi, getCamerasByWorkShopId, getWorkshopMiniMapLayoutPCApi, getWorkshopMiniMapLayoutMobileApi } from '@/api/scene/scene';
|
|
|
import KonvaMap from './MapBase/KonvaMap.vue';
|
|
|
import useCameraStatus from '@/views/cameras/preview/store/useCameraStatus';
|
|
|
-import { useRoute } from 'vue-router';
|
|
|
+import { onBeforeRouteLeave,useRoute } from 'vue-router';
|
|
|
import urlJoin from 'url-join';
|
|
|
import { useGlobSetting } from '@/hooks/setting';
|
|
|
import { getHeaders } from '@/utils/http/axios';
|
|
|
@@ -145,6 +145,7 @@ const handleAvatarSuccess = (e) => {
|
|
|
nextTick(() => {
|
|
|
konvaMap.value.addBg(imgUrlBg.value).then(() => {
|
|
|
isKnovaDestroy.value = false;
|
|
|
+ isChange.value = true;
|
|
|
});
|
|
|
})
|
|
|
};
|
|
|
@@ -245,13 +246,13 @@ const handleSave = () => {
|
|
|
isMap.value = true;
|
|
|
if(!hasBg.value && isMap.value){
|
|
|
ElMessage.error('请先添加车间地图');
|
|
|
- return;
|
|
|
+ return false;
|
|
|
}
|
|
|
const layout = konvaMap.value.saveLayout();
|
|
|
const cameraList = JSON.parse(layout).cameraList;
|
|
|
if (cameraList.length === 0 && hasBg.value) {
|
|
|
ElMessage.error('请至少添加1个相机标签后发布');
|
|
|
- return;
|
|
|
+ return false;
|
|
|
}
|
|
|
updateMinMapViewLayoutApi({
|
|
|
layout: JSON.stringify({ ...JSON.parse(layout), isUploadBg: hasBg.value }),
|
|
|
@@ -260,29 +261,33 @@ const handleSave = () => {
|
|
|
}).then(() => {
|
|
|
ElMessage.success('保存成功');
|
|
|
});
|
|
|
+ return true;
|
|
|
};
|
|
|
|
|
|
const changeMap = (val) => {
|
|
|
isChange.value = val;
|
|
|
};
|
|
|
-
|
|
|
-const handleBack = async() =>{
|
|
|
- if (isChange.value) {
|
|
|
- await ElMessageBox.confirm('是否保存当前修改?', '提示', {
|
|
|
+onBeforeRouteLeave((to,from,next)=>{
|
|
|
+ if(!isChange.value) {
|
|
|
+ next();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ setTimeout(()=>{
|
|
|
+ ElMessageBox.confirm('是否保存当前修改?', '提示', {
|
|
|
confirmButtonText: '是',
|
|
|
cancelButtonText: '否',
|
|
|
- type: 'warning',
|
|
|
+ customClass: 'elMessageBox__custom--warning',
|
|
|
+ }).then(async () => {
|
|
|
+ const isSaveSuccess = await handleSave();
|
|
|
+ if(isSaveSuccess) {
|
|
|
+ next();
|
|
|
+ }
|
|
|
+ next(false);
|
|
|
+ }).catch(() => {
|
|
|
+ next()
|
|
|
})
|
|
|
- .then(() => {
|
|
|
- handleSave();
|
|
|
- })
|
|
|
- .catch(() => {
|
|
|
- router.back();
|
|
|
- });
|
|
|
- } else {
|
|
|
- router.back();
|
|
|
- }
|
|
|
-}
|
|
|
+ },200)
|
|
|
+})
|
|
|
</script>
|
|
|
|
|
|
<style scoped lang="scss">
|