sign.vue 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <template>
  2. <div @click="!model.error && $emit('click', 'fuse')" class="sign-layout" :class="{ disabled: model.error }">
  3. <div class="model-header">
  4. <p>{{ model.title }}</p>
  5. <div class="model-action">
  6. <ui-icon ctrl type="show_roaming_n" @click.stop="$emit('click', 'pano')" class="icon"
  7. v-if="getSceneModel(props.model)?.supportPano()" />
  8. <ui-input type="checkbox" v-model="show" @click.stop :class="{
  9. disabled: model.error || custom.showMode === 'pano',
  10. }" />
  11. <ui-icon v-if="custom.modelsChangeStore" type="del" ctrl @click="$emit('delete')" />
  12. </div>
  13. </div>
  14. <div class="model-desc" v-if="active">
  15. <p><span>数据来源:</span>{{ SceneTypeDesc[model.type] }}</p>
  16. <p v-if="model.type !== SceneType.SWSS"><span>数据大小:</span>{{ model.size }}</p>
  17. <p><span>拍摄时间:</span>{{ model.time }}</p>
  18. </div>
  19. </div>
  20. </template>
  21. <script lang="ts" setup>
  22. import { getFuseModelShowVariable, SceneTypeDesc, SceneType } from "@/store";
  23. import { custom } from "@/env";
  24. import { getSceneModel } from "@/sdk";
  25. import type { FuseModel } from "@/store";
  26. import { computed } from "vue";
  27. import { currentModel, fuseModel } from "@/model";
  28. type ModelProps = { model: FuseModel; canChange?: boolean };
  29. const props = defineProps<ModelProps>();
  30. const active = computed(
  31. () => custom.currentModel === props.model && currentModel.value === fuseModel
  32. );
  33. type ModelEmits = {
  34. (e: "changeSelect", selected: boolean): void;
  35. (e: "delete"): void;
  36. (e: "click", mode: "pano" | "fuse"): void;
  37. };
  38. defineEmits<ModelEmits>();
  39. const show = getFuseModelShowVariable(props.model);
  40. </script>
  41. <style lang="scss" scoped src="./style.scss"></style>