sign.vue 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <template>
  2. <div
  3. @click="!model.error && $emit('click', 'fuse')"
  4. class="sign-layout"
  5. :class="{ disabled: model.error }"
  6. >
  7. <div class="model-header">
  8. <p>{{ model.title }}</p>
  9. <div class="model-action">
  10. <ui-icon
  11. ctrl
  12. type="show_roaming_n"
  13. @click.stop="$emit('click', 'pano')"
  14. class="icon"
  15. :class="{ active: custom.showMode === 'pano' && active }"
  16. v-if="supportPano"
  17. />
  18. <ui-input
  19. type="checkbox"
  20. v-model="show"
  21. @click.stop
  22. :class="{
  23. disabled: model.error || custom.showMode === 'pano',
  24. }"
  25. />
  26. <ui-icon
  27. v-if="custom.modelsChangeStore"
  28. type="del"
  29. ctrl
  30. @click="$emit('delete')"
  31. />
  32. </div>
  33. </div>
  34. <div class="model-desc" v-if="active">
  35. <p><span>数据来源:</span>{{ SceneTypeDesc[model.type] }}</p>
  36. <p v-if="![SceneType.SWSS, SceneType.SWYDSS].includes(model.type)">
  37. <span>数据大小:</span>{{ model.size }}
  38. </p>
  39. <p v-if="model.type !== SceneType.SWMX"><span>拍摄时间:</span>{{ model.time }}</p>
  40. </div>
  41. </div>
  42. </template>
  43. <script lang="ts" setup>
  44. import { getFuseModelShowVariable, SceneTypeDesc, SceneType } from "@/store";
  45. import { custom } from "@/env";
  46. import { getSceneModel } from "@/sdk";
  47. import type { FuseModel } from "@/store";
  48. import { computed, ref } from "vue";
  49. import { currentModel, fuseModel } from "@/model";
  50. type ModelProps = { model: FuseModel; canChange?: boolean };
  51. const props = defineProps<ModelProps>();
  52. const active = computed(
  53. () => custom.currentModel === props.model && currentModel.value === fuseModel
  54. );
  55. const sceneModel = getSceneModel(props.model);
  56. const supportPano = ref(sceneModel?.supportPano());
  57. if (sceneModel) {
  58. sceneModel.bus.on("loadDone", () => {
  59. console.error(sceneModel.supportPano());
  60. supportPano.value = sceneModel.supportPano();
  61. });
  62. }
  63. type ModelEmits = {
  64. (e: "changeSelect", selected: boolean): void;
  65. (e: "delete"): void;
  66. (e: "click", mode: "pano" | "fuse"): void;
  67. };
  68. defineEmits<ModelEmits>();
  69. const show = getFuseModelShowVariable(props.model);
  70. </script>
  71. <style lang="scss" scoped src="./style.scss"></style>