sign.vue 2.3 KB

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