ananzhusen 7 місяців тому
батько
коміт
a1aab27488

+ 11 - 5
src/services/common.ts

@@ -606,14 +606,20 @@ export const blank = async (save = true) => {
   select();
 };
 
-let lastTime = false;
+export const newFileDialog = ref({
+  show:false
+});
+// let lastTime = false;
 export const newFile = () => {
-  if(dot.value && !lastTime){
-    MessagePlugin.warning('当前画布未保存,请先保存!');
-    lastTime = true;
+  const hasPen = meta2d.store.data.pens.length;
+  if(hasPen&&dot.value){
+    // MessagePlugin.warning('当前画布未保存,请先保存!');
+    // lastTime = true;
+    // return;
+    newFileDialog.value.show = true;
     return;
   }
-  lastTime = false;
+  // lastTime = false;
   blank();
   router.push({
     path: '/',

+ 6 - 1
src/views/components/Graphics.vue

@@ -442,7 +442,9 @@ import {
 import { getNetJsDiagram } from '@/services/material';
 import Data from './Data.vue';
 import Structure from './Structure.vue';
+import { useDot } from '@/services/common';
 
+const { dot } = useDot();
 const { user } = useUser();
 const { setFolder, getFolder } = useFolder();
 const router = useRouter();
@@ -1356,7 +1358,10 @@ const open = async (item: any) => {
   if (!item || item.draggable !== false) {
     return;
   }
-
+  if(dot.value){
+    MessagePlugin.info('请先保存当前画布');
+    return;
+  }
   if (activeAssets.value === 'user') {
     router.push({
       path: '/',

+ 30 - 2
src/views/components/Header.vue

@@ -483,6 +483,17 @@
       @success="onSuccess"
     />
   </t-dialog>
+  <t-dialog
+    v-model:visible="newFileDialog.show"
+    header="提示"
+    confirm-btn="保存后新建"
+    cancel-btn="不保存直接新建"
+    @close="newFileDialog.show = false"
+    @confirm="saveNewfile"
+    @cancel="nosaveNewfile"
+  >
+    当前画布数据未保存,是否保存后新建?
+  </t-dialog>
 </template>
 
 <script lang="ts" setup>
@@ -529,7 +540,8 @@ import {
   // useAssets,
   autoSaveAS,
   queryURLParams,
-  dealDataBeforeOpen
+  dealDataBeforeOpen,
+  newFileDialog
 } from '@/services/common';
 import { useEnterprise } from '@/services/enterprise';
 import {
@@ -574,7 +586,7 @@ const baseUrl = import.meta.env.BASE_URL || '/';
 // const { assets, getAssets } = useAssets();
 
 const { user, signout } = useUser();
-const { setDot } = useDot();
+const { setDot, dot } = useDot();
 const data = reactive<any>({
   name: '新建项目',
   order: {
@@ -2840,6 +2852,22 @@ const onSuccess = (success: boolean) => {
   finishPay();
   emit('success', success);
 };
+
+const saveNewfile = ()=>{
+  save(SaveType.Save,'',true);
+  setTimeout(()=>{
+    if(dot.value === false){
+      newFile();
+      newFileDialog.value.show = false;
+    }
+  },2000);
+}
+
+const nosaveNewfile = ()=>{
+  setDot(false);
+  newFile();
+  newFileDialog.value.show = false;
+}
 </script>
 <style lang="postcss" scoped>
 .app-header {