bill 1 year ago
parent
commit
1d0ca3042f

+ 12 - 4
src/layout/model-list/index.vue

@@ -12,10 +12,10 @@
   <Teleport to="#left-pano" v-if="panoModel">
     <div class="mode-tab strengthen">
       <div class="mode-icon-layout" @click="custom.showMode = 'fuse'" :class="{ active: custom.showMode === 'fuse' }">
-        <ui-icon type="show_3d_n" class="icon" />
+        <ui-icon type="show_3d_n" class="icon" ctrl />
       </div>
       <div class="mode-icon-layout" @click="custom.showMode = 'pano'" :class="{ active: custom.showMode === 'pano' }">
-        <ui-icon type="show_roaming_n" class="icon" />
+        <ui-icon type="show_roaming_n" class="icon" ctrl />
       </div>
     </div>
   </Teleport>
@@ -58,10 +58,18 @@ const modelList = computed(() =>
 );
 
 const modelChangeSelect = (model: FuseModel, mode: "pano" | "fuse") => {
+  console.error(getFuseModelShowVariable(model).value);
   if (getFuseModelShowVariable(model).value) {
-    custom.currentModel = custom.currentModel !== model ? model : null;
+    console.log(custom.currentModel, model);
+    if (custom.currentModel === model && mode === custom.showMode) {
+      custom.currentModel = null;
+      custom.showMode = "fuse";
+      console.log("a?");
+    } else {
+      custom.currentModel = model;
+      custom.showMode = mode;
+    }
   }
-  custom.showMode = mode;
 };
 
 watchEffect(() => {

+ 7 - 25
src/layout/model-list/sign.vue

@@ -1,32 +1,14 @@
 <template>
-  <div
-    @click="!model.error && !active && $emit('click', 'fuse')"
-    class="sign-layout"
-    :class="{ disabled: model.error }"
-  >
+  <div @click="!model.error && $emit('click', 'fuse')" class="sign-layout" :class="{ disabled: model.error }">
     <div class="model-header">
       <p>{{ model.title }}</p>
       <div class="model-action">
-        <ui-icon
-          type="show_roaming_n"
-          @click.stop="$emit('click', 'pano')"
-          class="icon"
-          v-if="getSceneModel(props.model)?.supportPano()"
-        />
-        <ui-input
-          type="checkbox"
-          v-model="show"
-          @click.stop
-          :class="{
-            disabled: model.error || custom.showMode === 'pano',
-          }"
-        />
-        <ui-icon
-          v-if="custom.modelsChangeStore"
-          type="del"
-          ctrl
-          @click="$emit('delete')"
-        />
+        <ui-icon ctrl type="show_roaming_n" @click.stop="$emit('click', 'pano')" class="icon"
+          v-if="getSceneModel(props.model)?.supportPano()" />
+        <ui-input type="checkbox" v-model="show" @click.stop :class="{
+    disabled: model.error || custom.showMode === 'pano',
+  }" />
+        <ui-icon v-if="custom.modelsChangeStore" type="del" ctrl @click="$emit('delete')" />
       </div>
     </div>
     <div class="model-desc" v-if="active">

+ 1 - 1
src/layout/model-list/style.scss

@@ -55,7 +55,7 @@
     padding: 0 8px;
 
     &.active .icon {
-      color: var(--color-main-normal);
+      color: var(--color-main-normal) !important;
     }
   }
 

+ 15 - 28
src/sdk/association/fuseMode.ts

@@ -178,39 +178,26 @@ export const associationModels = (sdk: SDK) => {
       active: custom.currentModel,
     }),
     (status, oldStatus, onCleanup) => {
-      if (!status.active) return;
-      const sceneModel = getSceneModel(status.active)!;
+      const model = status.active && getSceneModel(status.active)!;
+      const oldModel = oldStatus.active && getSceneModel(oldStatus.active)!;
 
-      onCleanup(() => {
-        console.log(status.active!.title, "noAcitve");
-        sceneModel.changeSelect(false);
-      });
-
-      if (status.showMode === "pano") {
-        if (sceneModel.supportPano()) {
-          sceneModel.changeSelect(true);
-          sceneModel.flyInPano();
-          onCleanup(() => {
-            console.log(status.active!.title, "flyOutPano");
-            sceneModel.changeSelect(false);
-            sceneModel.flyOutPano();
-          });
+      if (model && status.active === oldStatus.active) {
+        if (status.showMode === "pano") {
+          model && model.flyInPano();
         } else {
-          custom.showMode = "fuse";
-          onCleanup(() => {});
+          model && model.flyOutPano();
         }
       } else {
-        if (oldStatus.showMode === "pano") {
-          setTimeout(() => {
-            sceneModel.changeSelect(true);
-          }, 100);
-        } else {
-          sceneModel.changeSelect(true);
+        oldModel && oldModel.changeSelect(false);
+        if (oldStatus.showMode !== status.showMode) {
+          if (oldStatus.showMode === "pano") {
+            oldModel && oldModel.flyOutPano();
+          }
+        }
+        if (status.showMode === "pano") {
+          model && model.flyInPano();
+          model && model.changeSelect(true);
         }
-        onCleanup(() => {
-          console.log(status.active!.title, "noAcitve");
-          sceneModel.changeSelect(false);
-        });
       }
     }
   );