<template>
  <div class="layer">
    <login />
    <ly-top  class="top" v-if="hiddenTop" />
    <ly-slide class="slide" :names="menuRouteNames" v-if="!hiddenSlide" />
    <div class="content">
      <router-view v-slot="{ Component }" v-if="isSystem">
        <component :is="Component" />
      </router-view>
      <template v-else>
        <div class="view" :class="{ full: hiddenSlide }">
          <div class="main" :class="{ fullmain: hiddenSlide }">
            <router-view v-slot="{ Component }">
              <component :is="Component" />
            </router-view>
          </div>
          <!-- <div class="app-wrap m-4" v-if="!hiddenSlide">
            <div
              class="app-scene"
              ref="sceneRef"
              :style="{
                width: '100%',
                height: 'calc(100% - 24px)',
              }"
            >
              <iframe
                v-if="caseId"
                :key="qpisceneList.length"
                :src="'https://survey.4dkankan.com' + sceneURL"
                frameborder="0"
                :style="{ width: '100%', height: '100%' }"
              ></iframe>
            </div>
          </div> -->
        </div>
      </template>
    </div>
  </div>
</template>

<script lang="ts" setup>
import lyTop from "./top/index.vue";
import login from "./loginDialog.vue";
import lySlide from "./slide/index.vue";
import { routeIsSystem, router } from "@/router";
import { computed, ref, onMounted, watch } from "vue";
import { menuRouteNames } from "@/app";
import {
  updateByTreeFileLists,
  getCaseSceneListData,
  getUrlSrc,
  getcaseLists,
  getCaseSceneList,
  getCaseInfo,
  Extract,
} from "@/store/case";
import { json } from "stream/consumers";
console.log(menuRouteNames, "menuRouteNames", router.currentRoute.value.name);
const isSystem = computed(() => routeIsSystem());
const caseId = computed(() => {
  const caseId = router.currentRoute.value.params.caseId;
  if (caseId) {
    return Number(caseId);
  }
});
// const qpisceneList = ref(getCaseSceneListData() as any[]);
const sceneList = ref([]);
const sceneURL = ref(`/code/index.html?caseId=${caseId.value}#/show`);
const sceneListName = ref("");
const modeList = ref([]);
const init = async () => {
  modeList.value =
    modeList.value.length == 0
      ? await getcaseLists(caseId.value as number)
      : modeList.value;
  let listss = await getCaseSceneList(caseId.value as number);
  sceneList.value = listss;
  if (listss.length) {
    // sceneList.value.unshift({ id: -1, type: 99, name: "多元融合" });
    let url = getUrlSrc({ id: 0, ...listss[0] }, caseId.value);
    sceneURL.value = url;
  }
  console.log("init", modeList.value, sceneList.value, modeList.value.length);
  // handleCommand();
  // let url = getUrlSrc({ id: 0 }, caseId.value)
  // sceneURL.value = url;
};
init();
const qpisceneList = computed(() =>
  getCaseSceneListData(caseId.value as number)
);
watch(
  () => Extract.value,
  () => {
    if (Extract.value) {
      sceneURL.value = sceneURL.value + "#/repair";
    } else {
      sceneURL.value = sceneURL.value.replace("#/repair", "");
    }
    console.log(Extract.value, "Extract");
  }
);
onMounted(() => {
  getCaseInfo(caseId.value);
  // setupSDK(document.querySelector('iframe') as HTMLIFrameElement)
});
updateByTreeFileLists();
const hiddenSlide = computed(
  () => !menuRouteNames.includes(router.currentRoute.value.name as string)
);
console.log(router.currentRoute.value, "hiddenSlide");
const hiddenTop = computed(
  () => router.currentRoute.value.name != 'drawCasePhotos' && router.currentRoute.value.name != 'records' && router.currentRoute.value.name != 'login' && router.currentRoute.value.name != 'register' && router.currentRoute.value.name != 'forgetpassword'

);
const handleCommand = (command) => {
  let newid = command || sceneList.value[0].id;
  console.log("handleCommand", command, newid, sceneList.value);
  let item = sceneList.value.find((item) => item.id == newid);
  sceneListName.value = item.name;
  let url = getUrlSrc(item, caseId.value);
  sceneURL.value = url;
  console.log("handleCommand", command, item, url);
};
const handleClick = (command: string) => {
  console.log("handleClick", command);
};
</script>

<style lang="scss" scoped>
.layer {
  position: absolute;
  z-index: 1;
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;

  .top {
    flex: 0 0 auto;
  }

  .content {
    flex: 1 0;
    display: flex;
    overflow: hidden;

    .slide {
      width: 100%;
      flex: 0 0 auto;
    }

    .view {
      flex: 0 0 auto;
      width: 100%;
      background-color: var(--bgColor);
      // flex-direction: column;
      display: flex;

      &.full {
        width: 100%;
      }
      .app-wrap,
      .app-view {
        width: calc(100% - 640px);
        height: 100%;
      }
      .player {
        flex: 0 0 auto;
        height: 32px;
      }

      .main {
        margin: 0;
        display: flex;
        flex-direction: column;
        overflow: hidden;
        flex: 1;
        background: #fff;
        // padding: 1rem 20px 1rem 32px;
        border-top: 1px solid #e6e6e6;
      }
      .fullmain {
        background-color: var(--bgColor);
        overflow-y: scroll;
      }
      .app-scene {
        position: relative;
      }
      .sceneList {
        position: absolute;
        width: 200px;
        text-align: center;
        left: calc(50% - 100px);
        top: 42px;
        color: #fff;
        font-weight: bold;
      }
      // .sceneList{
      //   width: 48px;
      //   height: 38px;
      //   position: absolute;
      //   left: 10px;
      //   top: 10px;

      //   padding: 6px 0;
      //   line-height: 42px;
      //   background: rgba(27, 27, 28, 0.80);
      //   text-align: center;
      //   cursor: pointer;
      // }
    }
  }
}
</style>
<style lang="scss">
.el-dropdown {
  width: 200px;
}
</style>
